深圳网站建设

深圳网站设计

首选达设互动 : 13689590100
网站建设咨询

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

时间:2016-07-01阅读次数:324

  下面介绍一些开发者在数据库操作中要注意的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

  Sql代码

  UPDATE titleauthor

  SET royaltyper = 90

  WHERE au_id = (SELECT au_id FROM authors

  WHERE au_lname = ‘Ringer’ AND au_fname = ‘Albert’)

  AND title_id = (SELECT title_id FROM titles

  WHERE title = ‘Life without Fear’)

  Update from

  UPDATE titleauthor

  SET royaltyper = 90

  FROM authors a, titles t

  WHERE titleauthor.au_id = a.au_id

  AND a.au_lname = ‘Ringer’

  AND a.au_fname = ‘Albert’

  AND titleauthor.title_id = t.title_id

  AND t.title = ‘Life Without Fear’

  16.  使用UNION ALL代替UNION

  UNION和UNION ALL的差别就在于UNION会对数据做一个distanct的动作,而这个distanct动作的速度则取决于现有数据的数量,数量越大时间越长。因此尽量使用UNION ALL来代替UNION。

  17.  避免高成本操作,如NOT LIKE

  本文来源于深圳网站建设--创强科技

以上【 开发者应了解的一些SQL优化准则 】的内容由创强科技(http://www.yxwzsj.com)为您提供,本文网址 : http://www.yxwzsj.com/wzjszsfx/203.html ,转载请注明出处!更多有关深圳网站建设,微信营销、电商平台建设、系统开发等互联网应用服务都可以联系我们。热线:13689590100

更多 +联系我们

业务电话: 135105876000755/83667961

业务 QQ:  316443437传真: 0755-83667961

E-mail:  xjz0668@163.com售后QQ : 290182737

渠道合作:  xjz0668@163.com

我们的认知

当对手还在将注意力停留在碎片化的互联网设计或程序实现时,创强科技早已开始将数字品牌的建设和传播进一步整合。只有通过整体的互联网品牌分析,帮助品牌建立互联网品牌传播价值,并围绕价值建立品牌粘性,提升品牌与用户的互动,更好的帮助品牌传播,触发用户的行动力才是我们工作的终极目标,这正是一流品牌的成功秘诀。
不可否认,建立互联网品牌传播价值的确是门艺术,但互联网不同于艺术涂鸦,企业投资品牌绝不是希望品牌成为某个艺术家的实验品。互联网传播的对象是用户,用户拥有自己的文化体系,群落共性才是互联网品牌传播创意的源g头,如果我们不能帮助企业激发目标用户的共鸣,产生购买冲动,那将是品牌的悲剧! 因此,互联网传播必须建立品牌传播价值,为梦想者创造梦想品牌,创强科技与您同行!