Запрос очень медленный для таблицы с миллионами записей. Какой правильный способ справиться с этим - PullRequest
0 голосов
/ 12 июня 2019

Предположим, у меня есть таблица с именем table1.Он имеет 5 столбцов A, B, C, D, E.

Столбец A является уникальным и не может иметь нулевые значения, поэтому я сделал Столбец A в качестве основного.

create table Table1
(
  A INT PRIMARY KEY,
  B INT NOT NULL,
  C DATETIME NOT NULL,
  D VARCHAR(2) NOT NULL,
  E DATETIME NOT NULL
)

В Table1 большечем 5 миллионов записей, и это будет расти со временем.Приложение всегда выполняет поиск на основе столбца B, который может иметь повторяющиеся значения.

Запрос на выбор очень медленный, когда я использую столбец B в предложении where.

Я могу придумать два подхода:

  1. Создание некластеризованного индекса для столбца B.
  2. Использование столбцов A и B в качестве составного первичного ключа.

Как правильно решить эту проблему.

1 Ответ

0 голосов
/ 12 июня 2019

Это действительно зависит от запросов, которые вы используете с этой таблицей, вы можете сделать некластеризованный индекс для столбца A и столбца B, или кластеризованный индекс (составной ключ первичного ключа) для A и B. Или некластеризованный индекс для A и B во включенном столбце.

CREATE NONCLUSTERED INDEX MyIndex 
ON myTable(A)  
INCLUDE(B);  

Попробуйте каждый случай и создайте план запроса для каждого запроса. Вы увидите, какой индекс является лучшим для вашей таблицы.

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