如何优化这样的三连接查询
select users.id_user from users,sales,specSales where users.id_user=sales.id_user AND sales.id_sale=specSales.id_sale AND specSales.id_article=34 group by id_user
我想要购买由id_article = X
标识的产品的不同用户我已经想到了这一点,但我不确定改进
select id_user from (select distinct(sales.id_user) from sales,specSales where sales.id_sale=specordine.id_sale and specSale.id_article=34)as t
表是(* =主键)
users
*id_user | name | ....
sales
*id_sale | id_user | .... other values
salesSpec
id_sale | id_article | .... other values
很多谢谢
答案 0 :(得分:2)
第二个查询可以简化为:
select distinct(sales.id_user)
from sales join
specSales
on sales.id_sale=specordine.id_sale
where specSale.id_article=34
这应该比第一个版本执行得更快。一个简单的原因:它没有加入users表。 “distinct”应与“group by”的工作量大致相同,因此连接的差异应该是对性能的主要影响。
这假设用户表的加入不是一个过滤器(所有用户ID都在表中,并且没有重复)。
此外,您应该开始使用正确的连接语法。在from语句中使用“,”是不好的做法。