- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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 c
您可能关注的文档
- 相关商圈对本项目影响作用分析.pdf
- 秀强股份:2016年年度报告.pdf
- 秀强股份:2017年半年度报告.pdf
- 秀强股份:2017年第三季度报告全文.pdf
- 秀强股份:2017年年度报告.pdf
- 秀水华庭楼书文字.pdf
- 研发配套楼屋面工程施工方案.pdf
- 研究所薪酬设计方案.pdf
- 盐城博联国际商业广场项目前期沟通性方案.pdf
- 盐城-韩国城商业项目产品定位建议方案.pdf
- 2025年市总工会党组书记、市委组织部部长生活会“四个带头”个人对照检查发言材料2篇(含上年度整改+个人情况、个人事项+典型案例).docx
- 2025年部编版小学六年级下册《道德与法治》第四单元 让世界更美好第10课 我们爱和平教学课件.pptx
- 公司领导班子2025年围绕“四个带头”主题检视问题整改落实方案与组织生活会批评意见(20条)2篇文.docx
- 教育系统党组班子2025年对照“四个带头”含意识形态、以典型案例举一反三解析检视材料【2篇文】.docx
- 2025年国有企业领导班子、学校副校长生活会“四个带头”方面对照个人检视发言材料2篇文(附:上年度整改情况、典型案例解析).docx
- 2025年生活会“四个带头”个人对照检查材料2篇文(含对其他领导批评意见,个人公开事项申报、意识形态).docx
- 2025年国有企业党委书记、领导班子生活会“四个带头”方面对照检查发言材料2篇文(上年度整改情况).docx
- 乡镇领导班子、市委组织部常务副部长2025年对照“四个带头”含违纪行为为典型案例的剖析与反思检视剖析材料{2篇文}.docx
- 市委社会工作部2025年生活会领导班子对照检视发言材料2篇文(含以案为鉴,深刻反思存在问题、反面典型案例举一反三解析、其他需要说明情况).docx
- 2025年民主生活会、组织生活会批评意见(20条)与市直单位领导班子“四个带头”对照检查材料【含上年度查摆问题整改落实情况】2篇文.docx
文档评论(0)