标题不言而喻。第一个查询 -
SELECT *
FROM table _t
WHERE (id1, id2, id3, id4) <> (x1, x2, x3, x4)
第二个查询 -
SELECT *
FROM table_t
WHERE NOT
(id1 = x1 AND
id2 = x2 AND
id3 = x3 AND
id4 = x4)
这两个查询之间有什么区别(即,是否存在任何性能增益/损失)?
修改
对于那些认为我在开玩笑的人,我只想说我在postgresql 8.4中使用了两个查询。 两个查询都运行正常。
答案 0 :(得分:2)
用户解释计划找出答案。
答案 1 :(得分:1)
如果您在id
和x
上有索引,则效果会发生变化。
答案 2 :(得分:1)
我不希望两个查询之间有任何区别,但它确实依赖于DBMS的优化器。可能是这些形式之一阻止优化器“看到”使用另一种形式没有的索引的机会。
正如@Jinesh所说,你最好使用DBMS中可用的任何工具来检查优化器在这些情况下产生的计划。