对不起,如果这是一个重复。哪个查询会运行得更快?使用 mySql。
select fieldA from myTable where fieldB IN (2,4,6,8)
对比
select fieldA from myTable where (fieldB=2 OR fieldB=4 OR fieldB=6 OR fieldB=8)
由于列表相对较小,因此它可能不会在两个查询之间产生如此大的差异,而是说它是 1000 个参数而不是 4 个。
对不起,如果这是一个重复。哪个查询会运行得更快?使用 mySql。
select fieldA from myTable where fieldB IN (2,4,6,8)
对比
select fieldA from myTable where (fieldB=2 OR fieldB=4 OR fieldB=6 OR fieldB=8)
由于列表相对较小,因此它可能不会在两个查询之间产生如此大的差异,而是说它是 1000 个参数而不是 4 个。
正如所评论的那样:如有疑问,请对其进行基准测试。
作为一个实际的答案,
IN
对于大量参数来说可能会更快,因为它是一个查找类型测试(我相信在大多数情况下,引擎会在内部创建一个临时表,其中包含IN
, 和然后使用二进制搜索类型算法来避免必须针对表中的所有值进行测试)。EXPLAIN
查看引擎建议它将在内部做什么。如果您在查询中使用 MSSQL,请右键单击并按显示估计的执行计划。它将为您提供查询不同部分的估计值。除此之外,如果您需要很多值,使用 IN 语句会容易得多。
考虑这个人的答案以及https://stackoverflow.com/a/1220433/1504882
如果您的值是简单的整数,那么查询会很快,但是字符和字符串会花费更长的时间,因为它需要比较更多。
总体而言,我怀疑您是否会在上述小查询中看到很多差异