在执行查询优化时,SHOW STATUS查询通过一些实践和解释返回易于理解的值。
但是last_query_cost是晦涩难懂的,文档也很少。
唯一解释的是,它必须被理解为一个反男子汉的价值:越小越好。
但是我们有关于这个高级别值的更多信息吗?它的单位是什么?它是如何计算(估计)的?等。我们如何使用它来进行高级分析?
感谢您的宝贵帮助。:)
发布于 2009-07-01 23:10:06
这与MySQL查询优化器的工作方式有关。当您输入并执行查询时,MySQL将构建一个查询计划。这是通过评估如何以几种不同的方式执行查询,并将“成本”分配给不同的可能性来完成的。这些成本主要基于内部统计数据,包括表中的行数、不同索引的基数等数据。完成此操作后,MySQL将选择开销最低的计划并执行查询。last_query_cost值就是此成本值。
正如您在manual中所看到的那样
由查询优化器计算的上次编译查询的总成本。这对于比较同一查询的不同查询计划的成本很有用。默认值0表示尚未编译任何查询。默认值为0。Last_query_cost具有会话作用域。
这确实是事实。该值仅用作比较不同查询的定量度量。
如果您想了解更多信息,可以在线获得一些关于查询优化器的有趣资源。不幸的是,我没有任何现成的链接给你,但是通过简单地搜索"mysql查询优化器“来找到一些资源应该不是太难。
发布于 2009-07-01 23:17:24
This post让它听起来像是一个估计值,因此不应该是高级分析所依赖的东西:
关于这两个查询,我没有向你展示的一件事是,Last_query_cost的值。这是因为它显示了速度较慢、数据密集度较高的查询实际上比较快的查询具有更低的成本:表重新设计中的最后一个查询成本
Variable_name Design1 Design2 Last_query_cost 20343.599000 71039.632551
这很奇怪,不是吗?我不知道查询开销是如何计算的;我相信优化器会在实际执行查询之前计算它。它肯定与执行这些查询的实际成本不匹配。它通常更符合真实成本,但并不总是如此。你不应该完全依赖它。
https://stackoverflow.com/questions/1071708
复制相似问题