出于好奇,我想知道在使用=、in、like和matches语法时,是否存在速度/效率上的差异。
select field from table where field = value;对比
select field from table where field in (value);对比
select field from table where field like value;对比
select field from table where field matches value;发布于 2010-07-28 21:21:08
我将添加到还存在和子查询。
但是性能取决于给定SQL引擎的优化器。
在oracle中,In和EXISTS之间有很多不同之处,但在SQL Server中不一定。
您必须考虑的另一件事是您所使用的列的选择性。一些案例表明IN更好。
但您必须记住,IN是非sargable(非搜索参数可用),因此它不会使用索引来解析查询,像和=这样的是sargable<代码>E213,并且支持索引
最好的?您应该花一些时间在您的环境中测试它
发布于 2010-07-28 21:05:02
这取决于底层的SQL引擎。例如,在MS-SQL中(根据查询规划器的输出),In子句被转换为=,因此没有区别
发布于 2010-07-28 21:10:52
通常,当有多个要比较的值时,使用"in“语句。引擎遍历每个值的列表,看看是否有匹配的值。如果只有一个元素,那么与"=“语句在时间上没有区别。
"like“表达式的不同之处在于,它使用模式匹配来查找正确的值,因此在后端需要做更多的工作。对于单个值,不会有显著的时间差,因为您只有一个可能的匹配项,并且比较将与"=“和"in”的比较类型相同。
基本上,不,或者至少差异是如此微不足道,以至于你不会注意到。
https://stackoverflow.com/questions/3353084
复制相似问题