有关MySQL中last_query_cost的更多信息?

时间:2009-07-01 22:43:08

标签: mysql optimization profiling

进行查询优化时,SHOW STATUS查询返回的值通过一些练习和解释很容易理解。

last_query_cost模糊不清,记录不清。

唯一可以解释的是,它必须被视为反强壮的价值:越小越好。

但我们是否有关于此高级值的更多信息?它的单位是什么?如何计算(估计)?我们如何将它用于高级分析?

感谢您的宝贵帮助。 :)

2 个答案:

答案 0 :(得分:2)

这与MySQL查询优化器的工作方式有关。当您输入并执行查询时,MySQL将构建查询计划。这是通过评估如何以多种不同方式执行查询,并为不同的可能性分配“成本”来完成的。这些成本主要基于内部统计,包括表格中的行数,不同指数的基数等数据。完成后,MySQL选择了最便宜的计划并执行查询。 last_query_cost值是此成本值。

正如您在manual中所看到的那样:

  

上次编译的总费用   查询计算的查询   优化。这很有用   比较不同查询的成本   计划进行相同的查询。默认   值为0表示没有查询   已编译。默认值   是0. Last_query_cost有会话   范围。

确实如此。该值仅用作比较不同查询的定量测量。

如果您想了解更多信息,可以在线获得有关查询优化器的一些有趣资源。不幸的是,我没有随时可用的链接,但通过简单搜索“mysql查询优化器”找到一些资源应该不会太难。

答案 1 :(得分:2)

This post听起来似乎只是一个估算,因此不应该依赖于高级分析:

  

我没有告诉你一件事   这两个问题的价值是   Last_query_cost。那是因为它   显示更慢,更加数据密集   查询实际上具有较低的成本   比较快的一个:上次查询成本   在表重新设计

Variable_name    Design1       Design2
Last_query_cost  20343.599000  71039.632551
     

那很奇怪,不是吗?一世   不知道查询费用是多少   计算;我相信优化器   实际计算它   执行查询。绝对是   与实际成本不符   执行这些查询。通常是这样的   更符合真实成本,但是   不总是。你不应该依赖它   绝对