Как правильно использовать индексы в MySQL?

Вопрос в следующем. Если есть составной ключ таблицы по столбцам col1, col2, col3 и я начну поиск по префиксу, т.е. WHERE col1=something - ускорю ли я выборку если сделаю условие следующим: WHERE col1=something AND col2=something? Плюс ко всему представим что и в случае первого условия и в случае второго условия запрос возвратит одно и тоже количество строк, т.е. таблица примерно следующего содержания:
+---id---+---col1---+---col2---+---col3---+
| 1 | 1 | 1 | ... |
| 2 | 2 | 2 | ... |
| 3 | 3 | 3 | ... |
| 4 | 4 | 4 | ... |
| 5 | 5 | 5 | ... |
+--------+-----------+-----------+-----------+
etc.
Ну и соответственно два варианта запроса - SELECT * FROM table1 WHERE col1=1 и SELECT * FROM table1 WHERE col1=1 AND col2=1.
(P.S. извиняюсь за запись структуры и данных, не знаю как здесь это оформить красиво,старался как мог((()
  • Вопрос задан
  • 2572 просмотра
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
В идеальном случае у Вас должен быть составной индекс на все поля, которые используются в условиях.
SELECT * FROM table1 WHERE col1=1Тут будет использоваться индекс по полю col1

SELECT * FROM table1 WHERE col1=1 AND col2=1 Тут будет использоваться составной индекс по (col1, col2)

Конечно, если у Вас есть индекс по col1 и инекс по col2, то MySQL использует их, но составной будет быстрее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Calc
в mysql есть команда explain
Она вам выведет сводную таблицу о том, как используются ваши индексы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы