【发布时间】:2018-03-24 07:42:22
【问题描述】:
我正在处理具有大量行(6 百万+)的数据库。
此表在两列上有一个复合主键。
它还在每个字段上都有单独的索引,因为有些查询需要这样做。显然,这些索引之一(索引?)是多余的,并且会降低写入操作的性能。
我如何找出哪一个是多余的?我知道主键的第一列已经被索引,不需要单独索引。那是对的吗?如果是这样,我可以运行一个查询来找出列表中的第一个吗?
【问题讨论】:
-
您没有问正确的问题 IMO。您添加这些索引是有原因的。原因是什么?为什么不添加一个涵盖两列的真正复合索引?
-
正如我所说,各种查询都需要这些索引,因此毫无疑问,我们需要两列上的索引。但是,如果复合索引也可以用作其中一列的索引,那么我不需要分别在两列上创建单独的索引。看这张图来说明情况:i.imgur.com/NrsOa0q.png 现在,我的问题是一个索引似乎是多余的。如何找到哪一个?
-
我的理解是,如果您在
(a, b)上有一个复合索引,那么它也适用于单独的a,但不适用于b。 -
这就是我的想法。在这种情况下,我如何找出哪一个是 a 列。我不想依赖 phpmyadmin 告诉我的内容。
-
使用
SHOW INDEX。你不能自己搜索这个吗?
标签: mysql indexing query-optimization