你会如何优化这个mysql查询?

时间:2013-07-16 14:49:04

标签: mysql

任何人都可以帮我优化这个查询:

SELECT DISTINCT
A.X1,      
A.X2   
FROM TABLEAA A
JOIN TABLEBB B ON A.Y = B.Y AND B.Z1='SELECTED1' AND B.W NOT LIKE 'SLECTED3'
JOIN TABLECC C ON A.Y = C.Y AND C.Z2='SELECTED2'
AND A.W NOT LIKE 'SLECTED3'

鉴于

TABLEAA:100万条目  TABLEBB:1700万条目  TABLECC:120万条目

它可以工作,但需要大约8到10秒。

有没有其他方法可以写这个?

编辑:TableBB上的主要索引是B.Z1和B.Y的组合。 TableCC上的主要指数是C.Z2和C.Y的组合。 TableAA的主要指数是A.Y

1 个答案:

答案 0 :(得分:0)

我希望这更好。

SELECT DISTINCT A.X1, A.X2   
FROM TABLEAA AS A
INNER JOIN(TABLEBB AS B)
   ON(A.Y = B.Y)
INNER JOIN(TABLECC AS C)
   ON(A.Y = C.Y)
WHERE B.Z1 = 'SELECTED1' AND
      B.W NOT LIKE '%SLECTED3%' AND
      C.Z2='SELECTED2' AND
      A.W NOT LIKE '%SLECTED3%'