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最好的 ?你应该花点时间在你的环境中测试它 |
|
|
|
|
|