Только что выяснилось, что производительность плана выполнения между следующими двумя операциями select значительно отличается:
select * from your_large_table
where LEFT(some_string_field, 4) = '2505'
select * from your_large_table
where some_string_field like '2505%'
Планы исполнения составляют 98% и 2% соответственно. Тогда бит разницы в скорости. Я был потрясен, когда увидел это.
Я всегда делал LEFT (xxx) = 'yyy', поскольку он читает хорошо. Я действительно нашел это, проверив LINQ сгенерированный SQL против моего обработанного вручную SQL. Я предположил, что команда LIKE будет медленнее, но на самом деле намного быстрее.
Мой вопрос: почему LEFT() медленнее, чем LIKE '%..'. Они идентичны?
Кроме того, существует ли процессор с использованием LEFT()?