是否有确定正在使用的索引和哪些索引可以“清除”的工具或推荐的做法?至少,我正在寻找一个日志文件,随着时间的推移,可以分析使用了哪些索引。从那时起,我就可以开始研究那些从来没有被选中的索引,因为这些索引可能会被清理掉。
我特别不想在我们的查询空间中运行“解释”。
发布于 2019-08-05 19:42:37
(另一个答案是好的,但是.)
如果您发现一个“从未使用过”的索引,请谨慎使用DROPping。它可能需要在一些罕见的管理情况。示例:清除“旧”数据。
同时,下面是一些应该删除的索引示例:
INDEX(a), -- remove this, since the next handles it
INDEX(a,b)但是保持这两者(由于“唯一性”约束)
UNIQUE(a), INDEX(a,b)PRIMARY KEY是一个关键:
PRIMARY KEY(id),
INDEX(id) -- remove this如果您使用的是“前缀”,则索引要么根本不使用,要么没有超出前缀。示例:
INDEX(foo(10)) -- Almost always better to say INDEX(foo)如果您没有“复合”索引(即多列索引),那么您可能需要一些索引。
如果您的目标是节省磁盘空间,那么请检查数据类型。有些人(和许多第三方产品)盲目地使用BIGINT。这需要8个字节,而INT只需要4个字节,即表的每一行8个字节,以及发生在其中的每个索引中的每一行8个字节。
为您的一个表提供SHOW CREATE TABLE;我可能有更多的建议。
https://dba.stackexchange.com/questions/244571
复制相似问题