IN查询如何在SQL中工作

时间:2015-04-15 06:15:53

标签: sql nosql

Select * 
from TableName 
where columnA = value1  
  AND columnB = value2 
  and column3 IN (list of ids);

以上查询将如何在任一DB中运行。

它与以下循环查询有何不同: -

for x in list_of_ids:
    Select * from TableName where columnA = value1 AND columnB = value2 and column3 = x;

3 个答案:

答案 0 :(得分:0)

后面的示例不是查询。你有一个循环(可能是Python),每次都在执行一个特定的查询(具有column3的特定值)。 这是一个虚构的例子还是来自特定的数据库?

答案 1 :(得分:0)

第一个示例应该更高效,因为它将执行select * from table。

第二个例子将执行选择X次,因此效率可能低于第一个。

下面的链接提供了我认为你在

之后的In子句的详细信息

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4ca39765-6521-4dec-aec1-373b1adf0be7/how-does-the-in-clause-affect-performance?forum=transactsql

答案 2 :(得分:0)

第二个例子只是一个循环,其中select将被执行X次。

执行第一个例子: 1.如果值的数量很小,IN将转换为ORed条件。 2.如果值的数量很大,某些数据库引擎会对其进行优化并创建一个包含所有值的假脱机并与表进行连接

无论如何,第一个例子会更快。

注意:SQL查询在NOSQL数据库中无效。以上场景仅适用于传统的dbs。