2013-01-30 2 views
0

У меня есть поиск, который вызывает хранимую процедуру, которая принимает до 5 параметров. есть число таблиц в запросе, но параметры все фильтруются в одной таблице в запросе. вопрос лучше иметь индекс для каждого из параметров (полей в таблице) или один индекс, который охватывает все из них , очевидно, что есть другие запросы, которые могут использовать одно или несколько из этих полей в своих целях, поэтому возможно, стоит оставить индекс для каждого из полей.индексы для поискового запроса sql server

извините, если что не понятно вопрос

вопрос: это лучше иметь индекс покрытия - который охватывает все поля поиска. OR индекс для каждого

который лучше?

любая помощь очень ценится благодаря

физ

+0

отправить запрос или, по крайней мере, схему таблицы – WKordos

ответ

0

Я подозреваю, что ответ зависит от того, как «до» 5 параметров наиболее часто указывается. Если они обычно указываются в определенной последовательности возрастающей специфичности (например, записи для клиента или клиента + accountid, или clientid + accountid + месяц и т. Д.), То, если вы создаете запрос на покрытие в этом порядке, то большинство из < 5 запросы все равно смогут эффективно использовать его.

Если, OTOH, какие конкретные параметры указаны и которые не являются относительно случайными, И у вас есть другие процессы, требующие индексов в некоторых из этих столбцов, то вы можете также индексировать каждый столбец отдельно.

В идеальном мире, конечно же, у вас будет установка для тестирования производительности, чтобы найти правильное решение эмпирически. Но так мало проектов построено в идеальных мирах. Тем не менее, вы не можете бить немного тестирования, даже если ваша установка DEV не похожа на производство.

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