Archive for ‘Mysql’ Category
今天同事遇到一个mysql语句执行慢的问题,叫我帮忙看看,具体语句如下:
select Products.ProductID,Name from Products
where Products.ProductID in
(
select ProductID from Price
INNER JOIN vendors ON (price.VendorID = vendors.VendorID)
where ( price.ExpiryDate > now() or YEAR(Price.ExpiryDate) = 1 )
and vendors.Status = ‘1′
and Price.MemberID=@memberID and Price.Disable=’false’ and IsHistory=0
)
and Disable=’false’
他说单独执行括号内的子查询,速度很快,没有那个子查询速度也很快,但合并起来后速度就很慢!
大家猜猜以下两个语句执行结果是否一样?
select * from aa a left outer join bb b on a.a=b.a and a.b=’wen’ ———(1)
select * from aa a left outer join bb b on a.a=b.a where a.b=’wen’——(2)
其中表bb跟表aa的结构一样,如下:
create table aa
(a int primary key,
b varchar(20))
结果如下:
语句(1):
a b a b
———– ——————– ———– ——————–
1 wen 1 today
2 su NULL NULL
3 test NULL NULL
4 ok NULL NULL
5 niu NULL NULL
(5 [...]