2016-01-12 6 views
0

У меня довольно большой стол с 400 столбцами и 100 000 строк. Когда я выбираю все столбцы, запрос выполняется очень медленно (~ 7500 мс). На 3 столбца установлен только первичный ключ. Меня не волнует скорость вставки/обновления, эта таблица в основном предназначена для чтения. Я читал о том, как Clustered Columnstore Index отлично подходит для моих требований, чтобы улучшить производительность чтения.кластерный индекс колонкового магазина медленный

Итак, я попробовал с индексом кластерного столбца и скорость почти такая же (~ 7000 мс). Я действительно ожидал гораздо большего улучшения. Я что-то упускаю ?

enter image description here

+0

7.5 секунд, чтобы выбрать 40 000 000 элементов данных, на самом деле не так медленно. Большую часть времени, вероятно, тратится на обработку большого набора данных. –

ответ

-1

Чтобы ответить на этот вопрос, мне нужно знать ваш запрос и определение столбцов полей в ИНЕКЕ.

Очень важно, чтобы они имели один и тот же тип данных, чтобы быть уверенным, что индекс используется. Иногда необходимо выполнить преобразование (отметка времени до даты или символ на дату и т. Д.), Что делает невозможным использование индекса.

+0

Не относится к запросу 'SELECT * FROM TableName' без предложения WHERE. –

+0

Тот, кто задает вопрос, не утверждает, что у него нет предложения о том, где он находится. Он только говорит, что он выбирает все столбцы. Не то, чтобы он выбирал все строки. –

+0

Это видно на скриншоте. –

0

Вы увидите реальную прирост производительности при выборе только некоторых из 400 столбцов. В традиционном rowstore все столбцы всегда должны быть доступны при выборе этой строки, даже если вы выбрали только несколько столбцов. В столбце «Столбец», если вы выбрали только 100 из 400 столбцов, запрос должен быть примерно в четыре раза быстрее с 25% от логических чтений. С помощью select * вы не увидите улучшения.

Смежные вопросы