NC31开发环境培训(new).pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NC31开发环境培训(new).ppt

Sql效率经验总结 SQL 开发观点 对于客户-服务器结构的数据库应用程序来说,减少网络传输的数据量直接影响到应用程序的性能。在编程时应注意尽量减少网络流量,避免不必要的数据传输。另外,数据库的加锁机制和事务处理也会直接影响到一个应用程序性能的好坏。在这里提供一些建议供大家参考。 合理使用存储过程 将完成一个功能的SQL语句写成存储过程,不但可以减少网络流量,而且由于存储过程是预编译的,能进一步提高响应速度。 WHERE子句 在SELECT语句中通过使用WHERE子句来减少返回的记录数。 去掉不需要的字段 避免使用 SELECT * FROM 语句,要使用 SELECT F1,F2 FROM 语句,去掉不需要的字段。 避免显式或隐含的类型转换 避免显式或隐含的类型转换,如在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为了支持事务一致性,对共享的资源上保留锁直至事务被提交。其他要使用相同资源的用户必须要等待。如果一个事务变长的话,锁的队列以及等待锁的用户队列将会变长,这最终导致系统吞吐量的降低。长的事务还增加了出现死锁的可能性。具体包括在事务中不能包含用户交互,避免更新同一数据两次,大批量的数据更新放在事物的后面部分等。 尽量减少对列的四则运算 在WHERE 子句中,尽量减少对列的四则运算。 例如: select colA from tableA where salary * 12 12000 应该用如下语句代替: select colA from tableA where salary 1000 在WHERE 子句中,尽量用= 代替。例如: select F1 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 操作符中使用NOT 因为不使用NOT,SQL SERVER在得到满足条件的第一条记录后返回,而使用NOT操作符,SQL SERVER 可能要扫描整个表。例如: if not exists (select * from tableA where…) begin statement group one end else begin statement group two end 应该用如下语句代替: if exists (select * from tableA where…) begin statement group two end else begin statement group one end IF EXISTS 语句 在判断有无符合条件的记录时不要用SELECT COUNT (*) 语句,而是要用IF EXISTS 语句: 例如: declare @var int select @var = count(*) from employee where emp_id = 123 if @var != 0 ... more sql code ... 应该用如下语句代替: if exists (select 1 from employee where emp_id = 123) begin ... more sql code ... end WHERE子句中的等于列(1) 在WHERE子句中如果对于某列有等于的条件,则在SELECT子句中不应该出现该列, 例如: select cust_number, cust_name from customer where cust_number = 612 应该用如下语句代替: select cust_name from customer where cust_number = 612 WHERE子句中的等于列(2) 在WHERE子句中如果对于某列有等于的条件,则在ORDER BY子句中不应该出现该列, 例如: select cust_number, cust_name, cust_st

文档评论(0)

精品文库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档