Подход к многостолбцовым индексам Mysql, когда таблица используется дважды в одном запросеMySql

Форум по Mysql
Ответить
Anonymous
 Подход к многостолбцовым индексам Mysql, когда таблица используется дважды в одном запросе

Сообщение Anonymous »

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

Код: Выделить всё

SELECT * FROM table1
WHERE table1.column_1 = 'a' AND table1.column_2 = 'b'
AND :idList IN
(SELECT id FROM table1 WHERE table1.column_3 = 'c' AND table1.column_4 = 'd')

:idList is a parameter passed in a function where this query is written
Мне нужно добавить индексы в таблицу1, чтобы ускорить эту операцию, поскольку таблица1 огромна и не имеет индексов для используемых столбцов. Если я правильно понимаю, после добавления двух индексов (столбец_1, столбец_2) и (столбец_3, столбец_4) будет использоваться только один из них.

Что было бы правильно подход к добавлению индексов здесь? Варианты, которые я пробовал до сих пор:
  • Добавить индекс (столбец_1, столбец_2). Запустить запрос. Удалите индекс и добавьте другой (column_3, columns_4). Запустить запрос. Остановитесь на самом быстром варианте.
  • Добавьте индекс (column_1,column_2,column_3,column_4)
Мне известен EXPLAIN, но в данном конкретном случае он пока не слишком помог

Подробнее здесь: https://stackoverflow.com/questions/793 ... -one-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»