SQL Server 性能调优(转)
上一篇 /
下一篇 2007-06-25 13:35:30
/ 个人分类:性能测试
51Testing软件测试网 c(c:SPl%o*c
1、 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1;在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的数据的。不要在应用中使用数据库游标,游标是非常有用的工具,但比使用常规的、面向集的SQL语句需要更大的开销;按照特定顺序提取数据的查找。51Testing软件测试网,}hd,M"U
qS
2、 避免使用不兼容的数据类型。例如float和int、char和varchar、binary和varbinary是不兼容的。数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。例如:
#e(dmmYK0SELECT name FROM employee WHERE salary > 60000
:N;u#r;BI4w6Qd0在这条语句中,如salary字段是money型的,则优化器很难对其进行优化,因为60000是个整型数。我们应当在编程时将整型转化成为钱币型,而不要等到运行时转化。51Testing软件测试网F6pVY
MqPX0G
3、 尽量避免在WHERE子句中对字段进行函数或表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:51Testing软件测试网4X O0bFKI
SELECT * FROM T1 WHERE F1/2=10051Testing软件测试网KF6grDlwAC-w^
应改为:
3Qtn*}2K1i6KK Um,f1u$D0SELECT * FROM T1 WHERE F1=100*251Testing软件测试网],\4QF0m
SELECT * FROM RECORD WHERE SUBSTRING(CARD_NO,1,4)=’5378’
lhsh \0Z`fE!{\0应改为:51Testing软件测试网8u^F6E~
ebGX6B
SELECT * FROM RECORD WHERE CARD_NO LIKE ‘5378%’51Testing软件测试网XPuV8[P ^l
SELECT member_number, first_name, last_name FROM members
-tli!E$wAy%A0WHERE DATEDIFF(yy,datofbirth,GETDATE()) > 21
*pF!v1`$CJ4Tdl;Z3f0应改为: