【问题标题】:phpMyAdmin wants to add multiple indices as one multi-column indexphpMyAdmin 想要将多个索引添加为一个多列索引
【发布时间】:2010-10-21 08:40:08
【问题描述】:

我正在使用 phpMyAdmin 创建表,并希望将两个不同的列定义为索引。我不是想创建一个多列索引,而是 phpMyAdmin 这样创建它们。有什么可能的问题吗?这些字段不直接相互关联,两个字段不会同时在WHERE 子句中使用。

考虑:

ALTER TABLE `documents` ADD INDEX (`offer_number`, `contract_number`);

还有:

ALTER TABLE `documents` ADD INDEX (`offer_number`);
ALTER TABLE `documents` ADD INDEX (`contract_number`);

有什么区别?

【问题讨论】:

    标签: mysql indexing phpmyadmin


    【解决方案1】:

    只有在索引的第一列与查询中使用的列匹配时,MySQL 才能使用索引。换句话说,如果您执行的查询可以使用contract_number 上的索引,则不会使用复合索引,因为contract_number 不是该键中的第一列。不过,复合索引可用于使用offer_number 的查询。

    【讨论】:

      【解决方案2】:

      http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html

      http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

      鉴于您对这些字段的看法,它们不应成为一个多列索引的一部分。

      如果你想在 PhpMyAdmin 上创建单列索引,你需要一次创建一个。

      【讨论】:

      • 因此,据此看来 WHERE contract_number = 123 不会被正确索引,因为它是复合索引的第二部分。谢谢。
      猜你喜欢
      • 2021-08-28
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2017-11-25
      • 2017-02-01
      • 2011-07-11
      • 2020-11-12
      • 1970-01-01
      相关资源
      最近更新 更多