我有一个如下查询
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 是否找出了最好的方法?
最佳答案
您可以在 MySQL 优化器执行以下操作后查看您的查询
EXPLAIN EXTENDED SELECT ...
这将为您提供一条警告,其中包含实际处理的查询(优化器对其执行的操作)。这样您就可以查看真实的加入顺序。
就性能而言,您应该确保在 ii.item
列上使用 B-TREE 索引,因为您执行了 LIKE
操作。 MySQL 默认是 HASH 索引,这并不是最佳选择。
关于mysql - MySQL 数据库是否优化连接本身,还是我们必须指定连接顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26436772/