mysql - MySQL 数据库是否优化连接本身,还是我们必须指定连接顺序?

标签 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 是否找出了最好的方法?

最佳答案

您可以在 MySQL 优化器执行以下操作后查看您的查询

EXPLAIN EXTENDED SELECT ...

这将为您提供一条警告,其中包含实际处理的查询(优化器对其执行的操作)。这样您就可以查看真实的加入顺序。

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

关于mysql - MySQL 数据库是否优化连接本身,还是我们必须指定连接顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26436772/

相关文章:

php - 字符串与不同 COLLATION 的比较

php - 以基于 1 列的数字顺序显示两列

mysql - 如何确认我已禁用表索引?

mysql - 为什么 MySQL 使用索引交集而不是组合索引?

mysql - mysql 更喜欢数字类型还是字母类型?

php - 高效查询

mysql NOT IN QUERY 优化

mysql - 使 SQL 查询更快

mysql - 在mysql上优化查询

mysql - 为什么这里不使用s上的索引进行排序呢?