开发者应了解的一些SQL优化原则ITeye - 娱乐之横扫全球

开发者应了解的一些SQL优化原则ITeye

2019年03月24日15时16分15秒 | 作者: 鸿飞 | 标签: 运用,开发者,优化 | 浏览: 436

下面介绍一些开发者在数据库操作中要注意的SQL编码原则。尽管本文不能掩盖一切的原则,但仍是期望能给开发者带来少许协助。下面就来看看在编码实践中哪些应该做,哪些不该该做。 

1.  在长期运转的查询和短查询中运用业务 

假如预期有一个长期运转的查询,并且有很多的数据输出时,开发者就应该在BEGIN TRAN 和END TRAN之间运用业务。 

这样业务会在缓冲区缓存为独立业务,并会被分配特定内存,以此来进步处理速度。 

2.  不要运用SELECT * 

假如运用SELECT * 来挑选表中的一切记载,那么一些不必要的记载也被读取、缓存,添加了磁盘的I/O和内存耗费。 

3.  防止在WHERE子句中运用显式或隐式函数,比方Convert () 

4.  防止在触发器中履行长期的操作 

5.  恰当运用暂时表和表变量 

当成果集较小的时分,请尽量运用表变量;当成果集相当大时,运用暂时表。 

6.  运用衔接(JOIN)替代子查询(Sub-Queries) 

子查询一般作为内联代码来运用,而衔接(JOIN)则作为表来运用,这样速度会更快。所以,应尽量防止在衔接中运用子查询。 

7.  衔接条件中表的次序 

在衔接条件中,应尽量首要运用较小的表,然后逐渐运用较大的表。 

8.  循环优化 

假如操作在循环内部没有任何影响,那么应尽量将操作放到循环外面,这样能够削减不必要的重复作业。因为,SQL Server优化器不会主动识别这种低效率的代码,更不会主动优化(其他一些言语的编译器能够)。 

9.  参数勘探 

不要在正履行的SP(存储进程)中运用SP参数,这样会导致参数勘探(Parameter Sniffing)。应该在声明和设置后再运用SP参数。因为这个原因,SP的行为在每次运转期间都不相同。 

10.  当运用条件句子时,能够运用Index(索引)Hint(提示) 

比方在SQL Server 2008中,能够运用Index hint,也能够运用fixed plan hint强制在查询中运用hint,以进步运转速度。 

11.  在声明中清晰指定存储进程中数据类型的巨细 

开发者随机声明数据类型的巨细是不可取的,如:Varchar (500)。这在履行时会在缓冲区中添加不必要的预留空间。 

12.  在查询中有用运用MAXDOP(最大并行度)设置 

问询数据库管理员关于四核CPU可用性的设置,包含内存的设置,然后恰当运用hint,能够有用改进查询速度。 

13.  SQL Server 2008中的GROUPING SETS 

假如数据库服务器为SQL Server 2008,那么能够在一切的Unions中运用Grouping Set来替代Group By。这样在Union中从头进行group by排序时,优化器不会每次都拟定一个方案。 

14.  当发作死锁时,总是运用With (nolock) 和With (rowlock) 

15.  运用Update From,而不是简略的Update 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章