Mysql多列索引

时间:2014-02-26 13:51:25

标签: mysql

UPDATE album SET x=1 WHERE store_id=:store_id && type=:type && time<:time

我有一个Mysql更新查询,我的问题是我如何设置此查询的索引

我在phpMyadmin中创建索引,我应该选择store_id,类型,时间并创建一个索引吗?

2 个答案:

答案 0 :(得分:1)

如果您按store_id搜索并输入类型和时间,则可以为这三个创建INDEX。

,但

如果有时你只是通过store_id搜索,那么你应该只在store_id

中使用索引

如果按store_id搜索并输入,那么index将在这两列上。

所以它取决于你用来搜索的列。

这里有如何用来创建你想要的索引。

  ALTER TABLE `album` ADD INDEX `myindex` (`store_id`) --for store_id
  ALTER TABLE `album` ADD INDEX `myindex` (`store_id` ,`type`,`time`) --for store_id and type and time
  and so on ....

选择你想要的那个。

答案 1 :(得分:0)

设置索引时,要开始的地方是where子句:

WHERE store_id=:store_id && type=:type && time<:time

从等式比较开始。然后,您可以选择一列不等式。对于此查询,最佳索引将包含所有三列:

create index album_storeid_type_time on album(store_id, type, time);