Запрос данных замедляется после создания раздела CLUSTERED INDEX [Azure] - PullRequest
0 голосов
/ 15 марта 2019

В Azure SQL Server я создал раздел CLUSTERED INDEX для таблицы с 7 миллионами строк.Тогда моему веб-сайту для загрузки данных потребуется более 10 секунд.

Но если я не создаю раздел CLUSTERED INDEX, моему веб-сайту для загрузки данных требуется около 6 секунд.Если я использую ту же базу данных, которая создала раздел CLUSTERED INDEX на SQL Server Enterprise, и поместил ее на сервер, расположенный в локальной сети, моему веб-сайту потребуется около 3 секунд для загрузки всех данных.

Мой sql-запрос для создания кластеризованного индекса:

CREATE PARTITION FUNCTION PARTITION_MYDATA (CHAR(4)) AS RANGE RIGHT FOR VALUES
    ('1000','1001',...,'5000');
CREATE PARTITION SCHEME SCHEME_MYDATA AS PARTITION PARTITION_MYDATA ALL TO
    ([PRIMARY]);
CREATE CLUSTERED INDEX IX_MyData_partitioncol ON dbo.MyData(ClassificationCode)
    WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    ON SCHEME_MYDATA(ClassificationCode);

Не могли бы вы сказать мне какое-нибудь решение для этой проблемы?Спасибо

1 Ответ

0 голосов
/ 15 марта 2019

Поскольку вы не поделились планом выполнения, основываясь на вашем вопросе, я думаю, что ваше разбиение не соответствует шаблону запроса. В связи с этим для получения распределенных данных требуется больше времени. Я бы предложил вам разбить данные по шаблону запроса, чтобы воспользоваться partition filtering. У вас есть выровненные по разделу кластерные индексы. Итак, данные распределяются по разделам. Прочтите об улучшении запросов для разделения на основе параметра запроса

Например, вы в первую очередь запрашиваете данные на основе EmployeeNumber. Затем, создать разделы на основе EmployeeNumber.

Если вы создаете разделы на EmployeeSalary, то запросы на основе EmployeeNumber должны сканировать разделы, чтобы получить EmployeeNumber и разделение фильтрации будет не происходит.

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

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