我已经编写了查询,我想知道在Query中使用IN子句的效果。
查询我 从khatapayment_track中选择* 其中Property_ID IN(从Khata_header中选择Property_id,其中DIV_ID = 2)
查询II 从khatapayment_track KPT,khata_header KH中选择* 其中kh.Property_id = KPT.Property_id和KH.DIV_Id = 2
我想知道 1)哪一个更快 2)使用IN子句的任何影响,如果查询具有3 IN子句,建议使用。
你能帮我举个例子吗
答案 0 :(得分:2)
您的第二个查询速度更快,但最好使用连接(它看起来更好,并且具有相同的执行计划):
select
*
from
khatapayment_track t
inner join khata_header h on (h.property_id = t.property_id)
where
h.div_id = 2
此外,您可以使用mysql profiler来比较您的查询。
答案 1 :(得分:0)
在您的示例中查询II更快,因为您在查询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