- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库应用基础原理篇SQL
SQL语言 SQL语言的优化 1、 Like语句是否属于SARG取决于使用%通配符的样式 如:name like ‘张%’ ,这就属于SARG 而:name like ‘%张’ ,就不属于SARG SQL语言 SQL语言的优化 2、 “非”操作符不满足SARG形式,使得索引无法使用 select * from employee where salary3000; select * from employee where salary3000 or salary3000; SQL语言 SQL语言的优化 3、 函数运算不满足SARG形式,使得索引无法使用 select * from record where substring(card_no,1,4)=′5378′(13秒) select * from record where amount/30 100(11秒) select * from record where convert(char(10),date,112)=(10秒) SQL语言 SQL语言的优化 3、 函数运算不满足SARG形式,使得索引无法使用 select * from record where card_no like ′5378%′( 1秒) select * from record where amount 1000*30( 1秒) select * from record where date= ′1999/12/01′ ( 1秒) SQL语言 SQL语言的优化 4、 尽量不要对建立了索引的字段,作任何的直接处理 select * from employs where first_name + last_name =beill cliton; select * from employee where first_name = beill’ and last_name =‘cliton’ SQL语言 SQL语言的优化 5、 不同类型的索引效能是不一样的,应尽可能先使用效能高的 应该将 where username=张三 and age20 改进为 where age20 and username=张三‘ 6、 尽量不要使用 is null 与 is not null作为查询条件 SQL语言 SQL语言的优化 7、 某些情况下IN 的作用与OR 相当 ,且都不能充分利用索引 表enrolls有200000行, cno上有非群集索引,select count(*) from enrolls where cno in(C1, C2) (23秒) select count(*) from enrolls where cno=C1 union select count(*) from enrolls where cno=C2 SQL语言 SQL语言的优化 8、 使用变通的方法提高查询效率 select * from customer where zipcode like “21_ _ _” select * from customer where zipcode “21000” SQL语言 SQL语言的优化 9.字段提取要按照“需多少、提多少”的原则,避免“select *” select top 10000 gid,fariqi,reader,title from tgongwen order by gid desc 用时:4673毫秒 select top 10000 gid,fariqi,title from tgongwen order by gid desc 用时:1376毫秒 select top 10000 gid,fariqi from tgongwen order by gid desc 用时:80毫秒 SQL语言 SQL优化技术的发展历程 SQL语言 SQL语言的优化 降龙十八掌:总纲 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; SQL语言 SQL语言的优化 降龙十八掌:总纲 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、频繁进行数据操作的表,不要建立太多的索引; 8、删除无用的索引,避免对执行计划造成负面影响; SQL语言 SQL语言的优化 降龙十八掌:总纲 9、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合索引
文档评论(0)