回答

收藏

在where子句SARGable上的串联字符串是否可用?

技术问答 技术问答 179 人阅读 | 0 人回复 | 2023-09-12

假设我在两个nvarchar列A和B有一个非聚集索引。" w6 a( {) v0 M$ v2 a
如下查询所示:
2 F' S# z0 Y: Q  F9 B8 o8 E9 ?  s3 ASELECT Columns FROM Table WHERE A   B = '1234'索引能有效地用于查询吗?- J- N$ I: K4 X9 `  w7 U% e
或者我应该这么做where子句中的列分开
" K0 }" Z* _; {- cSELECT Columns FROM Table WHERE A = '12' AND B = '34'我从测试中发现了一个非常令人惊讶的结果。两者都有相同的查询计划,但成本不同。在大多数情况下,级联查询速度更快,但有时分离版本更快。4 @4 E1 b8 y6 R. [7 L; @% L
                                                                # C" P" ~3 w% J8 d+ X3 O# t
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则