SQL Server: Charindex против стандартного оператора where, что является более эффективным? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть около 9 табличных функций, которые используются в более чем 30 отчетах SSRS, которые я пытаюсь сделать более эффективными.

Одним из основных утверждений, которые имеют общие функции, является то, что существует много операторов case сcharindexes ищет имя программы из определенной таблицы, чтобы определить значение (т. е. когда charindex («XXX», product)> 0, затем «1»).

Моя идея сделать это более эффективной - добавитьоператор case-концентратора в другой функции и его использование вместо исходной таблицы для упрощения обслуживания при развертывании новых продуктов (т. е. при запуске новых кодов продуктов они попадают в корзину Programhub).Это также устранит хариндексы, добавив новую функцию (то есть когда programhub = 'XXX', затем '1').

Когда я начал тестировать это, я не заметил каких-либо существенных различий в скорости (на самом деле это казалоськак старый способ был быстрее, вероятно, из-за кэша).

Я пытался сравнить планы выполнения и статистику, но они также схожи, с большей частью затрат от сканирования кластерного индекса.

Любой совет по общей эффективности?Есть ли способ обойти сканирование кластерных индексов или уменьшить нагрузку?Как я могу действительно сказать, какой запрос лучше для системы?

...