Gar*_*y B 2 performance sql-server query-performance
我有一个使用SUBSTRING
WHERE 子句中的函数的存储过程。
SELECT DISTINCT
ColumnBB,
ColumnCC
FROM TableAA WITH (NOLOCK)
WHERE SUBSTRING(ColumnAA, 1, 17) = @VariableA;
Run Code Online (Sandbox Code Playgroud)
如何防止此查询的索引扫描并使其快速执行?
如果您无法根据db2's answer修改架构,请尝试:
WHERE
ColumnAA LIKE @VariableA + '%'
AND LEN(@VariableA) >= 17 -- safety check
Run Code Online (Sandbox Code Playgroud)
请注意,如果@VariableA
少于 17 个字符,则您可以仅使用LIKE
. 例如,'The quick brown fox jumped over the lazy dog.'
is LIKE
'The%'
,但这不满足原始SUBSTRING
查询的要求。
Aaron 还提出了一个很好的观点,即DISTINCT
可能是最终的罪魁祸首。你为什么把它放在那里?是否应该用适当的唯一索引替换?
归档时间: |
|
查看次数: |
2923 次 |
最近记录: |