Это достаточно легко проверить.Я использовал таблицу с 6000000 строками, сравнивая с =
и like
с полем nvarchar
, индексированным , а не .
Используя like 'xx'
SQL Server Execution Times:
CPU time = 6416 ms, elapsed time = 493 ms.
Использование = 'xx'
SQL Server Execution Times:
CPU time = 3444 ms, elapsed time = 212 ms.
Если вы используете как с подстановочными знаками, я по крайней мере предположил, что это будет медленнее, но это не было
Использование like 'xx%'
SQL Server Execution Times:
CPU time = 3168 ms, elapsed time = 296 ms.
Использование подстановочного знака в начале - другое дело.
Использование like '%xx'
SQL Server Execution Times:
CPU time = 18017 ms, elapsed time = 1530 ms.
Все эти тесты выполняются без индекса в столбце я сравниваю внутреннюю операцию, которая сравнивается с аналогичным сравнением.В плане выполнения они равны <Intrinsic FunctionName="like">
для like
и <Compare CompareOp="EQ">
для =
.
Планы запросов "выглядят" одинаково для использования like
без %
и и =
но это не так.like
все еще использует <Intrinsic FunctionName="like">
даже без %
.