Каковы различия между этими двумя запросами - PullRequest
2 голосов
/ 07 декабря 2010

Название говорит само за себя.Первый запрос -

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. Оба запроса работают нормально .

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Пользователь Объясните план, чтобы выяснить это.

1 голос
/ 07 декабря 2010

Я бы не ожидал, что между этими двумя запросами будет какая-либо разница, но это действительно зависит от оптимизатора для вашей СУБД. Возможно, одна из этих форм не позволяет оптимизатору «увидеть» возможность использовать индекс, а другая - нет.

Как говорит @Jinesh, вам лучше использовать все имеющиеся в вашей СУБД средства для проверки планов, которые оптимизатор создает в этих случаях.

1 голос
/ 07 декабря 2010

Производительность изменится, если у вас есть индексы id s и x s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...