改善SQL语句的效率

来源:互联网 发布:淘宝直播怎么看 编辑:程序博客网 时间:2024/05/16 08:25

怎么分析执行计划来改善,SQL语句的效率,如 Table Scan,index seek,Nested Loops等执行计划中的关键字都是什么意思?

1、不要使用游标
2、规范化你的数据表
3、不要使用SELECT *
4、了解你将要对数据进行的操作
5、不要给“性别”列创建索引
6、使用事务
7、小心死锁
8、不要打开大的数据集
9、不要使用服务器端游标
10、使用参数查询
11、在程序编码时使用大数据量的数据库
12、不要使用INSERT导入大批的数据
13、注意超时问题
14、不要忽略同时修改同一记录的问题
15、在细节表中插入纪录时,不要在主表执行SELECT MAX(ID)
16、避免将列设为NULLable
17、尽量不要使用TEXT数据类型
18、尽量不要使用临时表
19、学会分析查询
20、使用参照完整性

1、当你看到这个信息的时候,说明在你的表上没有建立聚集索引并且没有使用到索引(如过有).在这种情况下,表中的每一条记录都将被检查一次,如果表很小,那么扫描是很快的,甚至比用了索引还要快.如果表很大,他会执行很长的时间,性能会受到很大的影响.
所以当你看到这个提示的时候,你要做的第一件事就是看表的大小,表很大就添加合适的索引.
2、你可能又会发现,已经建立了一个非聚集索引,但索引仍然没有使用。因为是否使用索引还依赖于你要获取的数据量的大小以及表的大小,或者你要查询的数据可选性很小(即在同一列中数据的重复性很高),这种情况下表扫描的速度大于使用索引.

在查询计划提示中你需要留意Estimated Row Count(预计行计数) . 它的意思是查询分析器可能返回的行数。如果采用表扫描并且这个计数很高的话,查询优化器就认为使用表扫描的速度快于使用非聚集索引(如果存在的话)。

Index Seek:
在表上使用非聚集索引查找数据,一般情况下执行都很快, 尤其是返回结果集很小的时候.

Clustered Index Seek:
在表上使用聚集索引查找数据,执行很快. 他是sqlserver查询数据时所使用的查询速度最快的索引.

原创粉丝点击