phpMyAdmin想要将多个索引添加为一个多列索引

时间:2010-10-21 08:40:08

标签: mysql indexing phpmyadmin

我正在使用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`);

有什么区别?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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上创建单列索引,则需要一次创建一个。