Я полагаю, что индекс "стоит того", зависит от того, насколько быстро вам нужно выполнить запрос. Только с сотнями записей это будет "довольно" быстро в любом случае. Но в любом случае индекс должен быть быстрее, потому что вам не нужно читать все (в некоторых случаях любые ) записи на диске. Даже запрос, который занимает 0,02 с без индекса, может выполняться с 0,0004 с одним. Как только вы попадете в тысячи строк, вам определенно понадобится индекс. Таким образом, вы также можете всегда использовать индекс для любых столбцов, используемых в предложениях JOIN или WHERE, независимо от количества строк.
MySQL должен использовать ваш индекс. Вы можете проверить, запустив запрос EXPLAIN
. (Просто добавьте EXPLAIN
перед вашим запросом, например EXPLAIN SELECT * FROM...
.) Он покажет, какой индекс используется, если есть. Помните, что вы должны использовать столбцы в порядке, указанном в составном индексе . Поэтому, если ваш индекс c1-c2-c3-c4
, вы не можете просто использовать его для c4
, не используя также другие столбцы.
Итак, SELECT * FROM table WHERE c1 = 'foo' AND c4 = 'bar'
будет использовать ваш индекс для c1 = 'foo'
, но он не сможет использовать его для c4 = 'bar'
, потому что вы не используете c2
или c3
. Поскольку вы используете все четыре столбца в индексе, индекс должен использоваться для всех них. Имеет смысл?