【发布时间】:2011-08-25 04:47:24
【问题描述】:
SQL 2008: 这很慢(需要 1 1/2 分钟):
声明@p1 varchar(50) 设置@p1 = '976j%' select * from invsearch_query where comparepnfwd like @p1这需要不到一秒钟的时间:
select * from invsearch_query where comparepnfwd like '976j%'为什么???
【问题讨论】:
-
查看查询执行计划(或在此处发布)
-
尝试转换你的文字,看看是否有什么不同(
CAST('976j%' AS VARCHAR(50)))。另外,请查看执行计划以了解差异。 -
comparepnfwd 是一个 varchar(50)
-
花费不到一秒钟:从 invsearch_query 中选择 * where comparepnfwd like cast('976j%' as varchar(50))
-
@Martin,是的,你是对的,慢的是在主表上进行聚集索引扫描(是的,invsearch_query 是一个视图),而快的是索引查找和键查找。跨度>
标签: sql sql-server-2008 sql-like performance