一个用于mySQL“EXPLAIN”专家

时间:2014-01-07 00:03:20

标签: mysql query-optimization

这是一个 sqlFiddle ,在3个不同的查询中有3个EXPLAIN,可以得到相同的结果。
对我来说,第三个查询看起来最好。但我不确定“相关的子信息”。 所以我的问题是哪一个真的是最好的查询? 是否有任何其他变化可以提供更好的结果。
据一位名叫@Strawberry的人说,但@Strawberry还没有发布它。

在阅读@ BillKarwin的回答后,我做了 sqlFiddle ,看看哪个查询实际上更快(使用该样本数据集)。

2 个答案:

答案 0 :(得分:1)

作为第四种解决方案,实际上经常使用:

引入另一个conversation实体,该实体将保存会话元数据,如:第一个消息引用,最后一个消息引用等

这样你就可以在没有任何讨厌的连接或分组的情况下获取数据

答案 1 :(得分:1)

请记住,EXPLAIN不一定是最快查询的最佳指标。它只是优化器最佳猜测的估计值

根据您在表中的数据量,以及由于在并发线程中运行查询而导致系统内存竞争激烈,最佳查询也可能不同。

所以你应该实际运行这些查询,不要只看EXPLAIN。使用query profiler或MySQL 5.6 PERFORMANCE_SCHEMASHOW SESSION STATUS。单独测量性能和负载下的性能,以获得性能的完整图像。还有一个新的optimizer trace功能,但这可能会有所变化。