Я работаю над оптимизацией запроса SQL, который идет против очень широкой таблицы в устаревшей системе. В данный момент я не могу сузить таблицу по разным причинам.
Мой запрос выполняется медленно, потому что он выполняет поиск по индексу по созданному мной индексу, а затем использует поиск закладок, чтобы найти дополнительные столбцы, которые ему не нужны, в индексе. Поиск закладок занимает 42% времени запроса (согласно оптимизатору запросов).
В таблице 38 столбцов, некоторые из которых являются nvarchars, поэтому я не могу создать покрывающий индекс, который включает все столбцы. Я попытался воспользоваться преимуществами пересечения индексов, создав индексы, которые охватывают все столбцы, однако эти «покрывающие» индексы не учитываются планом выполнения и не используются.
Кроме того, поскольку 28 из 38 столбцов извлекаются с помощью этого запроса, 28/38 столбцов таблицы будут храниться в этих покрывающих индексах, поэтому я не уверен, насколько это поможет.
Как вы думаете, поиск закладок так же хорош, как он собирается получить, или какой другой вариант будет?
(я должен указать, что это SQL Server 2000)