Рассмотрим таблицу с битовым столбцом, показывающим, является ли объект активным или неактивным, если большинство элементов неактивно (закрыто).
Насколько я понимаю, из-за ограниченного числа различных значений для этого столбца (2) SQL Engine посчитал более эффективным выполнять сканирование таблицы, чтобы найти открытые элементы, а не пытаться индексировать по битовому столбцу.
В SQL 2008 появилась новая функция, позволяющая фильтровать индексы. Не зная о его внутренних особенностях, я бы предположил, что индекс содержит ссылку на запись только в том случае, если он соответствует критериям фильтра, и что этот подход обеспечит эффективные средства для извлечения всех активных записей без необходимости разделения активные записи в отдельные таблицы или разделы.
Раньше я помещал первичный ключ записей открытых записей в таблицу, которую использовал для идентификации активных записей, а затем присоединял основную таблицу к этой таблице «активного списка», чтобы возвращать только активные записи.
Есть ли какая-либо причина, по которой использование отфильтрованного индекса для этой цели не подходит в этой ситуации?