Если я сделаю COLUMN_01, COLUMN_02 и COLUMN_03 (все столбцы в предложении WHERE) в качестве составного индекса без изменения существующих индексов, это улучшит производительность?
Возможно.Один индекс, который удовлетворяет всем критериям WHERE, служит полным путем доступа и, следовательно, является более эффективным, чем путь доступа с одним столбцом индекса.Оптимизатор выбирает один индекс, поэтому он будет индексировать чтение всех строк, соответствующих, скажем, критерию COLUMN_02, и отфильтровать эти строки, используя критерии других столбцов.
Цена, которую вы платите за это улучшение производительности, - это накладные расходыподдержание дополнительного индекса.Поэтому вам следует подумать, нужны ли вам все три индекса по одному столбцу (для других запросов).
есть ли порядок для столбцов составного индекса?
Да.Разместите их в порядке возрастания различных значений.Столбец ведущего индекса должен быть наименее различающим столбцом.Наличие уникального ключа в качестве ведущего столбца, вероятно, является катастрофой, хотя существуют крайние случаи, поэтому обязательно проведите эталонный тест.
Если я использую ИЛИ вместо И, как в этом запросе, это улучшит производительность?
Вы будете возвращать больше строк, что само по себе является дополнительной работой.В такой ситуации также сложно использовать индексы, поэтому, скорее всего, вы столкнулись с полным сканированием таблицы.Но почему бы не попробовать и посмотреть, что происходит?