回答

收藏

SQL效率-[=] vs [in] vs [like] vs [matches]

技术问答 技术问答 245 人阅读 | 0 人回复 | 2023-09-14

出于好奇,我想知道我在用[ =] vs [ in] vs [ like] vs [
4 m6 ]5 g6 \  W5 m2 W+ ymatches](只有一个值)语法中是否存在速度/效率差异?. G. l* E: C" P* t) g3 w. D6 \
select field from table where field = value;相对
8 _/ O% ?$ V+ e/ Aselect field from table where field in (value);相对$ W& T# _8 W8 k* }  Q/ N0 R
select field from table where field like value;相对2 N# j" G0 g: P; h% |; \, _0 R
select field from table where field matches value;               
, ^2 s! j, X) m- O' Y' Q    解决方案:                                                                " c5 e* z- z/ B2 d$ T/ Q9 T% E
                                                                我会加 还存在    和 subquery    。
) L% i4 K0 K, N+ T: a2 O但性能取决于给定SQL引擎优化器。4 t% t/ z6 _2 e, L0 C2 s% J
在oracle中,IN和EXISTS两者有很多不同,但在SQL Server中不一定。
) D6 I+ M7 ~" }/ T( X4 Q9 w您还需要考虑的另一件事是所用色谱柱的选择性。一些情况表明,IN更好。
+ ?) [4 l3 H8 p- R0 h8 L但你必须记住,IN    是 不可扩展的    (不支持搜索参数),因此不使用索引进行分析和查询,LIKE    和 =    是可, V; }* |- C- v( n
扩展的,    并支持索引
# `8 _* R! G6 ^# V* O1 H# y( y最好的 ?你应该花点时间在你的环境中测试它
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则