- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL 性能调优(索引的理论) 浪潮,鞠强 前言 性能调优的工作在公司的各个产品组作了不少年了,始终不算太成功。 性能的问题,90%的情况和SQL有问题。 在这90%中,80%以上的情况,和索引设置、SQL写法相关。 如何判断SQL是否有效率,我们并没有掌握工具和理论,始终还处在一个瞎猜的阶段。 我们的目标 通过这2小时的培训,解决我们对于这80%和90%的问题的困惑! 恢复Credit数据库 实验所用的表 category charge corporation member payment provider region statement status 判断SQL优劣的标准 Set statistics io on Set statistics time on 打开查询计划开关:Ctrl + K 仔细观察查询计划、I/O状况 牢记这几张图 – 无索引查询 牢记这几张图 –通用索引查询 牢记这几张图 – 聚集索引查询 牢记这几张图 – 无聚集索引的索引查询 牢记这几张图 – 有聚集索引的索引查询 试验一:检查索引的使用情况 首先了解我们要操作的表的值范围 SELECT Charge_No , MIN(Charge_No) AS Minimum Value, MAX(Charge_No) AS Maximum Value FROM charge UNION SELECT Member_No , MIN(Member_No) AS Minimum Value, MAX(Member_No) AS Maximum Value FROM charge UNION SELECT Provider_No , MIN(Provider_No) AS Minimum Value, MAX(Provider_No) AS Maximum Value FROM charge UNION SELECT Category_No , MIN(Category_No) AS Minimum Value, MAX(Category_No) AS Maximum Value FROM charge GO 试验一:检查索引的使用情况 检查数据量大小 SELECT * FROM charge WHERE charge_no BETWEEN 1 AND 100000 SELECT * FROM charge WHERE member_no BETWEEN 1 AND 10000 SELECT * FROM charge WHERE provider_no BETWEEN 1 AND 500 SELECT * FROM charge WHERE category_no between 1 AND 10 试验二:检查索引选择性 分别执行下列SQL,查看执行计划,以及每个SQL的I/O成本 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 100000 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 10000 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 1000 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 100 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 10 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 1 试验三:比较聚集索引和非聚集索引 执行下列SQL,并记录I/O成本 SELECT charge_no,member_no FROM charge WHERE charge_no BETWEEN 1 AND 100000 在charge_no上建立聚集索引,重新执行,并记录I/O。 试验三:比较聚集索引和非聚集索引 删除上述聚集索引,在member_no上建立聚集索引,重新执行,并记录I/O。(强制使用索引,下同) SELECT charge_no,member_no FROM charge(index(charge_member_link)) WHERE charge_no BETWEEN 1 AND 100000 删除上述聚集索引,在category_no上建立聚集索引,重新执行
您可能关注的文档
最近下载
- UbuntuLinux操作系统第2版(微课版)钟小平课后习题答案.doc VIP
- 输电线路三跨的经验分享.ppt VIP
- 电动汽车分布式驱动系统动力学分析与优化设计.docx VIP
- 专题1.4数轴与动点经典题型(四大题型)(原卷版+解析).docx VIP
- 幼儿小蝌蚪找妈妈绘本ppt课件.pptx VIP
- 磷酸铁行业现状.docx VIP
- 马克思主义与社会科学方法论课后习题答案(2018版).pdf VIP
- 6.1 树立法治观念 统编版道德与法治八年级上.pptx VIP
- GB_T 43933-2024 金属矿土地复垦与生态修复技术规范.pdf VIP
- 车牌识别系统软件使用说明8.1软件基本设置.pdf VIP
原创力文档


文档评论(0)