user_of_toster
@user_of_toster

Concatenated index из двух колонок === создание двух индексов?

Правильно ли я понимаю, что создание Concatenated index из двух колонок
CREATE INDEX index_name
ON table_name (column1, column2);

Равносильно
CREATE INDEX index_name1
ON table_name (column1);

CREATE INDEX index_name2
ON table_name (column2);
  • Вопрос задан
  • 62 просмотра
Решения вопроса 3
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
В общем случае, нет. И в разных СУБД по-разному. Например, в MySQL индекс (column1, column2) используется и для поиска только по column1, но для поиска только по column2 требуется отдельный индекс (column2).
Ответ написан
@bacon
Нет, по секрету, даже (column1, column2) и (column2, column1) это разные.
Ответ написан
@miruzzy
В случае с
CREATE INDEX index_name
ON table_name (column1, column2);


Вы можете выполнять поиск по column1 ( больше, меньше или равно) , также, как будто это индекс по одному полю.

А также вы сможете выполнять поиск и по column2, НО только тогда, когда в условии будет участвовать и первый столбец. Вот пример:
Select * from table where column1 = 3 AND column2 =5;

`AND` тут обязателен.

Почему не сделать 2 отдельных индекса?
Ответ прост: много накладок потом будет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы