2014-02-26 10 views
0
UPDATE album SET x=1 WHERE store_id=:store_id && type=:type && time<:time 

У меня есть запрос на обновление Mysql, Мой вопрос, как я могу настроить индекс для этого запросаMysql индекс несколько столбцов

создает индекс в PhpMyAdmin, я должен выбрать store_id, тип, время вместе и создать один индекс?

+0

Знаете ли вы, какой индекс используется вообще? –

+0

Не пытайтесь использовать '&&' в SQL. Оператор - 'AND'. –

ответ

1

Если вы ищете store_id и введите время и время, то вы можете создать INDEX для этих трех.

НО,

если иногда вы ищете только store_id то здесь вы должны использовать индекс только в store_id

, если вы ищете по store_id и типа, то индекс будет на этих двух столбцах.

поэтому он определяет, какие столбцы вы используете для поиска.

здесь как использовать для создания того индекса, который вы хотите.

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 .... 

Выберите, какой из них вы хотите.

+0

Что делать, если у меня есть другой поиск в запросе только store_id, мне нужно создать 2 индекса, 1-store_id только 2. три столбца вместе? – Ben

+0

только store_id вам нужно, для лучшего выполнения используйте только индекс на store_id. –

+0

вам не нужно делать индекс вовремя. –

0

При настройке индекс, место, чтобы начать это where пункт:

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

Начнем с сравнения равенства. Затем вы можете выбрать один столбец для неравенства. По этому запросу лучший индекс будет иметь все три столбца:

create index album_storeid_type_time on album(store_id, type, time); 
Смежные вопросы