Использование предложения IN в запросе к базе данных - PullRequest
0 голосов
/ 29 июня 2010

Я написал запрос, я хотел бы узнать эффект использования предложения IN в Query.

Запрос I Выберите * из khatapayment_track Где Property_ID IN (выберите Property_id из khata_header, где DIV_ID = 2)

Запрос II Выберите * из KPT khatapayment_track, KHata_header Где kh.Property_id = KPT.Property_id и KH.DIV_Id = 2

Я хотел бы знать 1) какой из них быстрее 2) Любые последствия использования предложения IN, желательно использовать, если в запросе есть предложение 3 IN.

Не могли бы вы помочь мне с примерами

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

Ваш второй запрос быстрее, но лучше использовать соединения (он выглядит лучше и имеет тот же план выполнения):

select
  *
from
  khatapayment_track t
    inner join khata_header h on (h.property_id = t.property_id)
where
  h.div_id = 2

Также вы можете использовать mysql profiler сравнить ваши запросы.

0 голосов
/ 29 июня 2010

Query II быстрее в вашем примере, так как вы используете подзапрос в Query I., но рассмотрите следующий пример, который возвращает аналогичные o / p, но запрос i будет возвращаться быстрее

select * from tableName  where id in (1,2,3,4)

аналогично

select * from tableName  where id =1 OR id =2 OR id =3 Or id =4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...