Да, отфильтрованный некластеризованный индекс будет использоваться для:
- запросов, которые сканируют очень мало записей, например.иметь
WHERE date ='20101016'
(отфильтровать один день, несколько записей из 270M). - запросов, чем сканирование больших диапазонов дат, но коснитесь только поля даты:
SELECT COUNT(date) FROM ... WHERE date BETWEEN '20080101' AND '20090101'
И это все.Любой более сложный запрос будет не использовать некластеризованный индекс, отфильтрованный или не отфильтрованный, потому что он достигнет критической точки индекса .
Итак, в заключение,для общих запросов к этой таблице, в которых есть предложение WHERE date > '200080101'
, предложенный вами отфильтрованный некластеризованный индекс поможет ... ничто .Более того, даже если бы вы переместили date
в качестве крайнего левого ключа кластеризованного индекса (который представляет собой типичную организацию временных рядов запросов временных диапазонов, как кажется в вашей таблице, и вы должны рассмотреть это самостоятельно), отфильтровывая «только»140M из 270M вряд ли является оптимизацией.
Правильная индексация - сложная тема.Я призываю вас прочитать все в этой ссылке MSDN, включая все подразделы: Разработка индексов .Это даст вам минимальные знания для понимания некоторых более сложных статей и для того, чтобы можно было разглядеть прямо из глупостей о множестве дезинформации, доступной там.