我刚刚发现以下两个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()会有CPU负担吗?