首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找不经常使用或根本不使用的索引

查找不经常使用或根本不使用的索引
EN

Database Administration用户
提问于 2019-08-05 14:04:39
回答 1查看 69关注 0票数 0

是否有确定正在使用的索引和哪些索引可以“清除”的工具或推荐的做法?至少,我正在寻找一个日志文件,随着时间的推移,可以分析使用了哪些索引。从那时起,我就可以开始研究那些从来没有被选中的索引,因为这些索引可能会被清理掉。

我特别不想在我们的查询空间中运行“解释”。

EN

回答 1

Database Administration用户

发布于 2019-08-05 19:42:37

(另一个答案是好的,但是.)

如果您发现一个“从未使用过”的索引,请谨慎使用DROPping。它可能需要在一些罕见的管理情况。示例:清除“旧”数据。

同时,下面是一些应该删除的索引示例:

代码语言:javascript
复制
INDEX(a),   -- remove this, since the next handles it
INDEX(a,b)

但是保持这两者(由于“唯一性”约束)

代码语言:javascript
复制
UNIQUE(a), INDEX(a,b)

PRIMARY KEY是一个关键:

代码语言:javascript
复制
PRIMARY KEY(id),
INDEX(id)    -- remove this

如果您使用的是“前缀”,则索引要么根本不使用,要么没有超出前缀。示例:

代码语言:javascript
复制
INDEX(foo(10))  -- Almost always better to say INDEX(foo)

如果您没有“复合”索引(即多列索引),那么您可能需要一些索引。

如果您的目标是节省磁盘空间,那么请检查数据类型。有些人(和许多第三方产品)盲目地使用BIGINT。这需要8个字节,而INT只需要4个字节,即表的每一行8个字节,以及发生在其中的每个索引中的每一行8个字节。

为您的一个表提供SHOW CREATE TABLE;我可能有更多的建议。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/244571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档