SQL 性能调优(索引的理论).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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上建立聚集索引,重新执行

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档