MySQL数据库优化是自己加入还是我们必须指定加入的顺序?

时间:2014-10-18 06:02:03

标签: mysql query-optimization

我有类似以下的查询

select f.number,SUM(ii.qty),SUM(c.g1),SUM(c.g2),SUM(c.g3),SUM(c.g4),SUM(c.g5),SUM(c.g6)  from 
farmer as f 
    inner join 
        issue as i on f.number = i.farmerno 
            inner join 
                item_issue as ii on i.recno = (ii.recno+0)
                    inner join 
                        crop as c on c.farmerno = f.number
where ii.item like 'S%' 
group by f.number

我们是否必须考虑最适合查询的连接顺序,还是MySQL找出最佳方法?

1 个答案:

答案 0 :(得分:0)

您可以在MySQL Optimizer执行

之后查看您的查询
EXPLAIN EXTENDED SELECT ...

这会给你一个包含查询的警告,因为它确实被处理了(优化器用它做了什么)。这样您就可以查看真实的连接顺序。

至于性能,您应该确保在ii.item列上使用B-TREE索引,因为您执行了LIKE操作。 MySQL默认是HASH索引,它不是最佳选择。