sql经验总结.ppt
《sql经验总结.ppt》由会员分享,可在线阅读,更多相关《sql经验总结.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Sql效率经验总结SQL 开发观点对于客户-服务器结构的数据库应用程序来说,减少网络传输的数据量直接影响到应用程序的性能。在编程时应注意尽量减少网络流量,避免不必要的数据传输。另外,数据库的加锁机制和事务处理也会直接影响到一个应用程序性能的好坏。在这里提供一些建议供大家参考。合理使用存储过程将完成一个功能的SQL语句写成存储过程,不但可以减少网络流量,而且由于存储过程是预编译的,能进一步提高响应速度。WHERE子句在SELECT语句中通过使用WHERE子句来减少返回的记录数。去掉不需要的字段避免使用 SELECT*FROM 语句,要使用 SELECT F1,F2 FROM 语句,去掉不需要的字
2、段。避免显式或隐含的类型转换避免显式或隐含的类型转换,如在WHERE 子句中Numeric 型和 Int型的列的比较。SQL SERVER在SELECT 语句中,如果表中的大部分记录符合查询条件,尽管WHERE子句中的字段上有索引,但SQL SERVER不会使用索引,而是顺序扫描该表。复合索引对于复合索引要注意,例如在建立复合索引时列的顺序是F1,F2,F3,则在WHERE 或ORDER BY子句中这些字段出现的顺序要与建立索引时的字段顺序一致,可以是F1或F1,F2 或F1,F2,F3。否则SQL SERVER不会用到该索引。尽快地提交事务SQL SERVER为了支持事务一致性,对共享的资源
3、上保留锁直至事务被提交。其他要使用相同资源的用户必须要等待。如果一个事务变长的话,锁的队列以及等待锁的用户队列将会变长,这最终导致系统吞吐量的降低。长的事务还增加了出现死锁的可能性。具体包括在事务中不能包含用户交互,避免更新同一数据两次,大批量的数据更新放在事物的后面部分等。尽量减少对列的四则运算在WHERE 子句中,尽量减少对列的四则运算。例如:select colA from tableA where salary*12 12000应该用如下语句代替:select colA from tableA where salary 1000在WHERE 子句中,尽量用=代替。例如:select F
4、1 from Table1 where a3(其中a 为int 型)在该例中,a列上是有索引的,SQL SERVER扫描索引页,直到a=3的页,然后顺序扫描,直到a=4,如果a=3的记录很多,会有很多无效的I/O操作。应该用如下语句代替:elect F1 from Table1 where a=4避免在IF EXISTS 和 IN 操作符中使用NOTl因为不使用NOT,SQL SERVER在得到满足条件的第一条记录后返回,而使用NOT操作符,SQL SERVER 可能要扫描整个表。例如:if not exists(select*from tableA where)begin statement
5、 group oneendelsebegin statement group twoendl应该用如下语句代替:if exists(select*from tableA where)begin statement group twoendelsebegin statement group oneendIF EXISTS 语句在判断有无符合条件的记录时不要用SELECT COUNT(*)语句,而是要用IF EXISTS 语句:例如:declare var intselect var=count(*)from employee where emp_id=123if var!=0.more sql
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 经验总结
限制150内