SQL Сервер и индексы по историческим данным - PullRequest
0 голосов
/ 26 мая 2020

У меня есть таблица на SQL сервере с 10 миллионами строк, это история остатков клиентов по дате.

Есть два индекса по (balance_date, customer_code) и (customer_code, balance_date), поскольку я обращаюсь к таблице по дате / всем клиентам и по клиенту / всем датам.

Вопрос: есть только одна строка на дату / клиента, есть ли преимущество в определении любого из двух индексов как уникальных или лучше, если они не уникальны? Я заинтересован в улучшении производительности при запросе таблицы, меня не волнует вставка.

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

есть ли преимущество в определении любого из двух индексов как уникальных или лучше, если они не уникальны?

Да, но очень маленький. Уникальный индекс может быть уже, поэтому на каждой нелистовой странице может поместиться больше ключей.

Неуникальный индекс имеет локатор строк (столбцы кластеризованного индекса или идентификатор строки), добавленный к столбцам ключа индекса. Для уникального индекса указатель строк присутствует только на конечных страницах.

Вам, вероятно, следует сделать один из этих индексов кластеризованным индексом, возможно, со сжатием ROW или PAGE, или сделать таблицу кластеризованным хранилищем столбцов.

0 голосов
/ 26 мая 2020

Наличие уникального / неуникального индекса зависит от имеющихся у вас данных. Если у вас есть составное уникальное значение, вы можете использовать уникальный индекс, который имеет хорошую производительность по сравнению с неуникальным индексом. Go по ссылкам ниже для лучшего понимания:

https://asktom.oracle.com/pls/apex/asktom.search?tag=unique-vs-non-unique-index

http://www.dba-oracle.com/t_index_unique_vs_non_unique.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...