Недавно я обнаружил возможность использовать предложения WHERE в индексах в SQL Server 2005. Я хотел бы оптимизировать некоторые запросы и надеялся получить некоторую обратную связь.
Таблица интереса содержит 2 столбца с плавающей точкой, [long] и [short]. Эти столбцы могут быть 0 в 20-40% строк. Есть несколько сохраненных процедур, которые запрашивают эту таблицу с одним из следующих предложений:
- ГДЕ (длинный <> 0 ИЛИ короткий <> 0)
- ГДЕ (длинный <> 0 И короткий <> 0)
Я рассматриваю возможность помещения индексов на длинные и короткие (или один индекс на оба) с условием WHERE <> 0 в надежде, что хранимые процессы смогут использовать сканирование индекса, а не сканирование таблицы, чтобы получить эти данные .
Учитывая вышеприведенную информацию, как бы вы занялись созданием индексов? Или, если индекс не является лучшим решением, каковы разумные альтернативы? Заранее спасибо.