首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL效率- [=] vs [in] vs [like] vs [matches]

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

Stack Overflow用户
提问于 2010-07-28 21:02:50
回答 4查看 37.7K关注 0票数 16

出于好奇,我想知道在使用=inlikematches语法时,是否存在速度/效率上的差异。

代码语言:javascript
复制
select field from table where field = value;

对比

代码语言:javascript
复制
select field from table where field in (value);

对比

代码语言:javascript
复制
select field from table where field like value;

对比

代码语言:javascript
复制
select field from table where field matches value;
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-28 21:21:08

我将添加到还存在子查询

但是性能取决于给定SQL引擎的优化器。

在oracle中,In和EXISTS之间有很多不同之处,但在SQL Server中不一定。

您必须考虑的另一件事是您所使用的列的选择性。一些案例表明IN更好。

但您必须记住,IN是非sargable(非搜索参数可用),因此它不会使用索引来解析查询,像和=这样的是sargable<代码>E213,并且支持索引

最好的?您应该花一些时间在您的环境中测试它

票数 13
EN

Stack Overflow用户

发布于 2010-07-28 21:05:02

这取决于底层的SQL引擎。例如,在MS-SQL中(根据查询规划器的输出),In子句被转换为=,因此没有区别

票数 14
EN

Stack Overflow用户

发布于 2010-07-28 21:10:52

通常,当有多个要比较的值时,使用"in“语句。引擎遍历每个值的列表,看看是否有匹配的值。如果只有一个元素,那么与"=“语句在时间上没有区别。

"like“表达式的不同之处在于,它使用模式匹配来查找正确的值,因此在后端需要做更多的工作。对于单个值,不会有显著的时间差,因为您只有一个可能的匹配项,并且比较将与"=“和"in”的比较类型相同。

基本上,不,或者至少差异是如此微不足道,以至于你不会注意到。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3353084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档