【发布时间】:2017-05-08 00:00:03
【问题描述】:
有一个我想要优化的查询。为了进行一些测试,我拍摄了生产数据库的快照并为此数据库创建了一个新的测试实例。使用explain 子句,我可以看到两个数据库之间的连接顺序不同。这两个数据库具有相同的版本(MySQL 5.6.19a)、相同的引擎(InnoDB)、相同的模式、相同的索引、相同的数据,并且在相同的材料上执行。唯一的区别是生产数据库使用更多内存(显然),因为它有更多的连接。
什么可能导致连接顺序不同? 内存使用情况? 索引仍在测试实例中构建? 生产数据库的索引是碎片化的?
【问题讨论】:
-
加入订单是什么意思?
-
如果您有如下查询:
SELECT ... FROM A JOIN B ON B.id = A.id_B JOIN C ON C.id = A.id_C您可以先在 B 上加入 A,然后在 C 上,或者先在 A 上加入 C,然后在 B 上等... 通常引擎会尝试确定顺序这将限制要读取的行数等...
标签: mysql database join indexing