Mysql多列索引 updatealbumset x=1,其中store\u id=:store\u id&&type=:type&&time

Mysql多列索引 updatealbumset x=1,其中store\u id=:store\u id&&type=:type&&time,mysql,Mysql,如果您同时按store\u id、type和time进行搜索,则可以为这三者创建索引 但是, 如果有时您只按存储\标识进行搜索,那么在这里您应该只使用存储\标识中的索引 如果您按store_id和type进行搜索,则索引将位于这两列上 因此,它取决于您用于搜索的列 这里介绍如何使用创建所需的索引 UPDATE album SET x=1 WHERE store_id=:store_id && type=:type && time<:time 选择所需的索引

如果您同时按store\u id、type和time进行搜索,则可以为这三者创建索引

但是,

如果有时您只按存储\标识进行搜索,那么在这里您应该只使用存储\标识中的索引

如果您按store_id和type进行搜索,则索引将位于这两列上

因此,它取决于您用于搜索的列

这里介绍如何使用创建所需的索引

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

选择所需的索引。

设置索引时,起始位置是
where
子句:

UPDATE album SET x=1 WHERE store_id=:store_id && type=:type && time<:time
  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 ....

你知道索引是用来做什么的吗?尽量不要在SQL中使用
&&
。运算符是
。如果我只有另一个查询搜索存储id,我是否需要创建两个索引,一个存储id只有2.3列?只有您需要的存储id,为了更好的性能,我们只使用存储id上的索引。您不必按时创建索引。@BenWong是的!如果有时只查询store_id,有时查询store_id和其他列,则必须为每个案例创建单独的索引。在您的例子中,您还可以有几个单独的索引:(store_id),(store_id,type),(store_id,time),(store_id,type,time)。。。但是添加索引会使insert/update/delete语句慢得多,所以如果没有必要,就不要添加它们。在这种情况下,我也需要在索引中投入时间吗?戈登·林诺夫的回答花了很多时间
create index album_storeid_type_time on album(store_id, type, time);