- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2010-01-18
如何优化 sql 语句 .txt 心态决定状态,心胸决定格局,眼界决定境界。当你的眼泪忍不住要流出来的时候,睁大眼睛,千万别眨眼,你会看到世界由清晰到模糊的全过程。 honglove ( 高级程序员 )
1、查询时不返回不需要的行、列
业务代码要根据实际情况尽量减少对表的访问行数,最小化结果集,在查询时,不要
过多地使用通配符如: select * from table1 语句,要用到几列就选择几列,如: select
col1,col2 from table1; 在 可 能 的 情 况 下 尽 量 限 制 结 果 集 行 数 如 : select top 100
col1,col2,col3 from talbe2, 因为某些情况下用户是不需要那么多的数据的。
2、合理使用 EXISTS, NOT EXISTS 字句
如下所示:
SELECT SUM(T1.C1) FROMT1 WHERE((SELECT COUNT(*) FROMT2 WHERET2.C2=T1.C2)0)
SELECT SUM(T1.C1) FROM T1 WHERE EXISTS(SELECT * FROM T2 WHERE T2.C2=T1.C2)
两种产生相同的结果, 但是后者的效率显然要高过于前者。 银行后者不会产生大量锁定的表扫描或是索引扫描。
经常需要些一个 T_SQLL语句比较一个父结果集和子结果集,从而找到是否存在在父结果集中有而在子结果集中乜嘢的记录,如:
SELECT _a.hdr_key FROM hdr_tb1 a -----------tb1 a 表示 tb1 用别
a 代替
WHERE NOT EXISTS (SELECT * FROM dt1_tb1 b WHERE a.hdr_key = b.hdr_key)
SELECT _a.hdr_key FROM hdr_tb1 a -----------tb1 a 表示 tb1 用别
a 代替
LEFT JION dt1_tb1 b ON a.hdr_key = b.hdr_key WHERE b.hdr_key IS NULL
SELECT hdr_key FROM hdr_tb1
1
WHERE hdr_key NOT IN (SELECT hdr_key FROM dt1_tb1)
三种写法都可以得到同 的 果集,但是效率是依次降低
3、充分利用 接条件
在某种情况下,两个表之 可能不止一个的 接条件, 在 where 字句中将 解条件完整的写上,有可能大大提高 速度。
例:
a) 、 SELECTSUM(A.AMOUNT)FROMACCOUNT left jion CARDB on A.CARD_NO= B.CARD_NO
b) 、 SELECTSUM(A.AMOUNT)FROMACCOUNT left jion CARDB on A.CARD_NO= B.CARD_NO AND A.ACCOUNT_NO = B.ACCOUNT_NO
第二句将比第一句 行快得多。
4、 WHERE字句中关系运算符的
、在关系运算中,尽量使用 =,尽量不要使用 。
、 WHERE字句中尽量不要使用 NOT运算符,如: NOT IN ,NOT EXISTS, NOT 、 NOT
NOT运算符一般可以去除。如 NOTSALARY10000K 可以改 : salary=100, 如避免使用
NOT IN, 可以使用 left outer jion 代替它。
、where 字句中条件表达式 关系 AND ,将条件 假的概率高的放在前面,概率相同、条件 算 的放在前面。
d) 、尽可能不要用 Order by 字句。使用 Order by ,尽量减少列数、尽量减少排序
数据行数、 排序字段尽量是数字型 (尽量不要是字符型) 。GROUPBY、 SELECT DITINCT、UNION等字句,也 常 致 Order 运算。
、不要使用 Select count(*) 方式来判断 是否存在, 建 使用 Select top 1 from
table1 where ??。
、不要使用 Group by 而没有聚合列。
g) 、避免 Select 句的 Where 字句条件用于假。如: where 1=0;
h) 、如果有多表 接 , 有主从表之分,并尽量从一个表 取数,如 select
a.col1,a.col2 from a jion b on a.col3=b.col4 where b.col5= ’ a’ .
2
、在 where 字句中,如果有多个过滤条件,应将所有列或过滤记录数量最多的条件应该放在前面。
二、使
您可能关注的文档
- 2006年下学期国际金融试题.docx
- 皮带硫化工艺.docx
- 2017会计继续教育作业成本法.docx
- 2017年重庆市安装预算员专业技能模拟试卷.docx
- 2018年人员编制预算表.docx
- (同中薛兰)《花泥画的制作》教学设计.docx
- (标准)制作费合同.docx
- (新版)商品混凝土建筑业企业申请资质所需资料.docx
- 临时道路费用预算.docx
- 信息时代财经职专生电算化实训教学.docx
- 化学反应速率与平衡.ppt
- 企业会计信息质量问题及对策【精品发布】.doc
- 免疫学的应用高二上学期生物人教版选择性必修一.pptx
- 高中物理自由落体运动课题研究力学部分+课件+-2023-2024学年高一上学期物理人教版必修第一册.pptx
- 北师大版生物七年级上册 《细胞的基本结构和功能》第2课时CEP课件1.pptx
- Unit 4 Grammar and usage(教学课件)-高中英语牛津译林版(2020)选择性必修第三册.pptx
- 特异性免疫高二上学期生物人教版选择性必修1.pptx
- 期末复习课件专题9+物体的浮沉条件及应用(2)++2023-2024学年人教版八年级物理下册.pptx
- 其他植物激素高二上学期生物人教版选择性必修1.pptx
- 三大费用核算节税技巧【会计实务操作教程】.pptx
最近下载
- GPS北斗二代双模时钟系统K801C用户手册.doc
- 2024山东德州市齐河县事业单位优秀青年人才引进50人笔试备考题库及答案解析.docx
- 2023年湖南工业大学软件工程专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 2024年贵州省贵阳市中考数学模拟试卷附答案解析.pdf
- 工程建设二类费用取费标准.doc
- 2024年德州禹城市事业单位引进优秀青年人才(48人)笔试备考题库及答案解析.docx
- 基于arduino的智慧农业大棚系统.doc
- 信息科技四年级上期末测试卷附答案.doc VIP
- Siemens 西门子家电 对开门冰箱 KA92NV66TI 使用说明书.pdf
- 品质部人员的培训内容.docx
文档评论(0)