我陷入了一个设计不佳的系统中。现在我正在他们的数据库上做DBA,我有很多像下面这样的情况(伪代码):
Table t1{
c1;
c2;
c3;
c4;
key(c1);
key(c2);
key(c1,c2);
key(c1,c2,c3);}
单列索引真的有必要吗,因为我已经有一个包含这些列的多列索引?
或者另一方面 - 是否需要多行列,因为我已经有了单列列?
文档页面的简短摘录MySQL 如何使用索引 https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html:
如果表具有多列索引,则优化器可以使用索引的任何最左边的前缀来查找行。例如,如果您在 (col1
, col2
, col3
),您已在 (col1
), (col1
, col2
), and (col1
, col2
, col3
)。有关更多信息,请参阅第 8.3.5 节 “多列索引” https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html.
你最好删除索引(c1)
and (c1,c2)
。它们不被使用,但会使用存储空间并消耗处理器能力,以便在表数据更改时保持最新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)