进行查询优化时,SHOW STATUS
查询返回的值通过一些练习和解释很容易理解。
但last_query_cost
模糊不清,记录不清。
唯一可以解释的是,它必须被视为反强壮的价值:越小越好。
但我们是否有关于此高级值的更多信息?它的单位是什么?如何计算(估计)?我们如何将它用于高级分析?
感谢您的宝贵帮助。 :)
答案 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
那很奇怪,不是吗?一世 不知道查询费用是多少 计算;我相信优化器 实际计算它 执行查询。绝对是 与实际成本不符 执行这些查询。通常是这样的 更符合真实成本,但是 不总是。你不应该依赖它 绝对