如何检测是否需要MySQL索引?
我们的想法是可以改善某些查询。而且我知道我可以潜入缓慢的查询日志中...但是我在下面的文章中搜索了MS SQL,想知道是否有一种简单的方法可以分析是否需要索引(并将立即提高速度)。当前的MySQL数据库。
感谢帮助
MS SQL的资源:https://dba.stackexchange.com/questions/56/how-to-determine-if-an-index-is-required-or-necessary
你不能
有办法来检测,过了一段时间,指数是否被使用。但是无法确定没有使用索引。假设您有一个每月执行一次的任务,该任务需要对表进行一些重要维护。而且,您确实需要一定的索引,以防止任务锁定表并关闭应用程序。如果您检查了当月大部分时间的索引使用情况,但未能包括该使用情况,则可能会决定不需要该索引。然后,您将删除索引...,并感到抱歉。(这是一个真实的轶事。)
同时,关于索引有一些简化的规则...
INDEX(a)如果您也有,则不需要INDEX(a,b)。INDEX(id)如果您也有PRIMARY KEY(id)或,则不需要UNIQUE(id)。INDEX(a), INDEX(b)是不一样的INDEX(a,b)。INDEX(b,a)是不一样的INDEX(a,b); 您可能同时需要。INDEX(flag),其中flag只有少量不同的值,可能永远不会使用-优化器将改为扫描表。INDEX(foo(10)))是无用的。(但是有很多例外。)PRIMARY KEY和UNIQUEkey意味着某些东西不是最优的。PRIMARY KEY。PRIMARY KEY(id),INDEX(foo)是真的INDEX(foo, id)。WHERE子句,并使用的索引ORDER BY。因此,我更喜欢采用所有查询(SELECTs,UPDATEs和DELETEs),为每个查询确定最佳索引,消除冗余等,以便找到“最佳”索引集。在给定SELECT的情况下,请参阅我的食谱来创建索引。
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |