Новый индекс в куче, имеет ли значение порядок столбцов в индексе sql? - PullRequest
0 голосов
/ 26 апреля 2018

У нас есть таблица без индексов (куча) с 3 столбцами (A, B, C, D, E).Нам нужно создать новые индексы для этого выбора:

SELECT A FROM T1 WHERE A=1 AND C=3
SELECT D FROM T1 WHERE C=4 and A=1

Если я создаю 2 индекса, как это имеет смысл?Или это тоже самое?

CREATE INDEX  indexC1 ON T1(A, C);
CREATE INDEX  indexC2 ON T1(C, A);

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

отличается

Пример SQLServer:

CREATE INDEX  indexC2 ON T1(C, A);
SELECT * FROM T1 WHERE C=4  --it will run index,because C is first key

CREATE INDEX  indexC2 ON T1(C, A);
SELECT D FROM T1 WHERE A=4  --it won't run index,because when it run 
                            --will check is C first key or not
                            --if C is first key then check A key
0 голосов
/ 26 апреля 2018
  1. Оба одинаковы.В индексе хранятся оба столбца.
  2. Теперь, если в таблице нет ключа, вы можете создать кластерный индекс, который решит все ваши проблемы. (Производительность)
  3. В случае, если вы создаете некластерзатем для повышения производительности используйте индекс покрытия (в случае, если вы используете SQL Server, подобное существует и в других БД, но я не уверен на 100%).

    • Используя индекс покрытия, вы можете поместить столбец, который вы используете, в Select Like A или D или Любой другой столбец, который не является частью индекса, но является частью результата.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...