取消

数据库sql查询优化

作为非专业数据库开发人员,我们一般优化就是加索引,但是索引总不能把所有的列都加上吧,这里有一条sql可以查询系统在使用中那些查询是因为索引缺失带来开销很大的,你就可以专门针对这些查询优化(加索引),但是如果这个查询出来有几千条以上,就根据你丰富的经(随)验(便)来选择加哪些索引,你也可以去吐槽开发数据库的人,我的sql你都无法自动优化还写什么数据库。


sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
ddmid.statement,--索引缺失的表的名称
ddmid.equality_columns,--构成相等谓词的列的逗号分隔列表
ddmid.inequality_columns,--构成不等谓词的列的逗号分隔列表
ddmid.included_columns,--用于查询的涵盖列的逗号分隔列表
ddmigs.user_seeks,--由可能使用了组中建议索引的用户查询所导致的查找次数
ddmigs.user_scans,--由可能使用了组中建议索引的用户查询所导致的扫描次数
ddmigs.avg_total_user_cost,--可通过组中的索引减少的用户查询的平均成本。
ddmigs.avg_user_impact --实现此缺失索引组后,用户查询可能获得的平均百分比收益。 该值表示如果实现此缺失索引组,则查询成本将按此百分比平均下降。
FROM sys.dm_db_missing_index_details AS ddmid
JOIN sys.dm_db_missing_index_groups AS ddmig
ON ddmid.index_handle=ddmig.index_handle
JOIN sys.dm_db_missing_index_group_stats AS ddmigs
ON ddmig.index_group_handle=ddmigs.group_handle

参考资料

本文会经常更新,请阅读原文: https://dashenxian.github.io/post/%E6%95%B0%E6%8D%AE%E5%BA%93sql%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 小神仙 (包含链接: https://dashenxian.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (125880321@qq.com)

登录 GitHub 账号进行评论