- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【2017年整理】大型与数据库的优化查询
结合索引优化SQL语句提高数据库查询效率
避免表扫描数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)联机分析处理(OLAP)是各使用最为重要的计算机应用之一。从大多数系统的应用实例来看,查询而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句。举例,比如一个数据库表上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时。如果采用比全表扫描更好的查询策略,往往可以使查询时间降为几分钟甚至几秒钟,由此可见查询优化技术的重要性。本文以应用实例为基础,结合数据库,介绍优化查询技术在现实系统中的运用。
一个好的查询计划往往可以使程序性能提高数十倍。查询计划是用户所提交的SQL语句的集合,查询规划是经过优化处理之后所产生的语句集合。DBMS处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后,由预编译模块对语句进行处理并生成查询规划,然后提交给系统处理执行,最后将执行结果返回给用户。在实际的数据库产品(如MS SQLServer)的高版本中都是采用 SQL 查询的应答结果创建一个过程计划,但是它选择的特定计划取决于查询的确切语法及查询中的子句顺序。无论数据库中记录的数目或组合是否随时间变化而更改,基于语法的查询优化器每次都执行同样的计划。与基于开销的查询优化器不同,它不查看或维护数据库的统计记录。“基于开销的查询优化器”在备选计划中选择应答 SQL 查询的计划。选择是基于对执行特殊计划的开销估算(I/O 操作数、CPU 虽然现在的数据库产品在查询优化方面已经做得越来越好,但由用户提交的SQL语句是系统优化的基础,很难设想一个原本糟糕的查询经过系统的优化之后会变得高效,因此用户所写语句的优劣至关重要。
2 合理建立索引提高查询效率 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。采用索引来加快数据处理速度也成为广大数据库用户接受的优化方法索引的使用要恰到好处,其使用原则如下:
在经常进行连接,但是没有指定为外键的列上建立索引。
在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
在条件表达式中经常用到的不同值较多的列上建立索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
使用系统工具。如避免或简化排序
应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。以下是一些影响因素:
索引中不包括一个或几个待排序的列;
group by或order by子句中列的次序与索引的次序不一样;
排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
对数据表的顺序存取
在嵌套查询中,对表的顺序存取可能对查询效率产生致命的影响。比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。避免这种情况的主要方法就是对连接的列进行索引。例如,两个表:学生表(学号、姓名、年龄……)和选课表(学号、课程号、成绩)。如果两个表要做连接,就要在“学号”这个连接字段上建立索引。还可以使用并集来避免顺序存取。尽管在所有的检查列上都有索引,但某些形式的where子句强迫优化器使用顺序存取。下面的查询将强迫对table1表执行顺序操作:
SELECT * FROM table1 WHERE (user_num=104 AND user_id1001) OR user_id =1008
虽然在_num和上建有索引,但是在上面的语句中优化器还是使用顺序存取路径扫描整个表。因为这个语句要检索的是分离的行的集合,所以应该改为如下语句:
SELECT * FROM table1 WHERE _num =104 AND user_id1001
UNION
SELECT * FROM table1 WHERE user_id=1008
这样就能利用索引路径处理查询。
避免困难的正规表达式 技术上叫正规表达式但耗费时间正规表达式困难的正规表达式支持通配符和LIKE关键字。例如:SELECT * FROM table1 WHERE user_id LIKE “98_ _ _”
即使在
您可能关注的文档
- 【2017年整理】外研与社大学英语2U06A.ppt
- 【2017年整理】外研与版选修七六模块译文.ppt
- 【2017年整理】外研与社新标准小学英语(三年级.doc
- 【2017年整理】外研与社小学英语六年级下册Module8_unit_1_hellen_keller_教材分析.ppt
- 【2017年整理】外研与社小学英语一年级起点三年级下课件+.ppt
- 【2017年整理】外研与社版l现代大学英语精读课件一册esson3.ppt
- 【2017年整理】外科与临床护理工作日志表.doc
- 【2017年整理】外科与护理学七外科感染病人的护理.doc
- 【2017年整理】外研与社高中英语必修五单元2各知识点.ppt
- 【2017年整理】外科与护理学期中考试卷.doc
- 【2017年整理】大型与超市客流量的调查与分析.doc
- 【2017年整理】大大与鱼头零基础学习英语(摘抄).doc
- 【2017年整理】大二与听力Unit7CanaVideoGameLeadtoMurder?.ppt
- 【2017年整理】大学与中考些什么证书及考证具体时间.doc
- 【2017年整理】大学与专业英语教学课件.ppt
- 【2017年整理】大学与仪器分析复习.ppt
- 【2017年整理】大学与体验英语(一)课件.ppt
- 【2017年整理】大学与一册英语听力.ppt
- 【2017年整理】大学与体验英语(三册)TestOne.doc
- 【2017年整理】大学与体验英语(三版)一周一练1习题答案.doc
最近下载
- 2025年执业药师之西药学专业一模考预测题库(夺冠系列).docx VIP
- ISO 15614-13 2023 金属材料焊接工艺规程及评定 电阻对焊和闪光焊(中文版).pdf
- 过敏性休克抢救指南2025版.docx
- 扩张型心肌病的护理查房课件.pptx VIP
- 第一章 食品工艺学导论.ppt VIP
- 系统性红斑狼疮(共44张PPT).pptx VIP
- 3.1 标志设计 (课件)人教版七年级美术上册.pptx VIP
- genesis2000脚本编写,Perl╱TK常见问答中文版.pdf VIP
- 2024《广西农产品电商物流SWOT-PEST分析及发展策略研究(数据图表论文)》16000字.docx VIP
- 剑桥国际少儿英语KB1第1-12单元文本-(英汉版).pdf VIP
文档评论(0)