gpt4 book ai didi

mysql - 如何使用 EXPLAIN *预测 * MySQL 查询的性能?

转载 作者:IT老高 更新时间:2023-10-28 12:56:00 25 4
gpt4 key购买 nike

我正在帮助维护一个程序,该程序本质上是一个友好的只读前端,适用于大型复杂的 MySQL 数据库——该程序根据用户输入构建临时 SELECT 查询,将查询发送到数据库,获取结果,对它们进行后处理,并将它们很好地显示给用户。

我想为构建的查询的预期性能添加某种形式的合理/启发式预测 - 有时用户无意中进行了不可避免地需要很长时间的查询(因为它们会返回巨大的结果集,或者因为它们“违背了数据库的索引方式”)并且我希望能够向用户显示一些“有点可靠”的信息/猜测查询需要多长时间。它不一定是完美的,只要它不会变得如此糟糕和频繁地与现实脱节,以至于导致用户学会无视它的“哭狼”效应;-) 基于此信息,用户可能决定去喝杯咖啡(如果估计是 5-10 分钟),去吃午饭(如果是 30-60 分钟),终止查询并尝试其他方法(可能对他们请求的信息有更严格的限制) ) 等等等等。

我对 MySQL 的 EXPLAIN 语句不是很熟悉——我看到很多关于如何使用它来优化查询或数据库架构、索引等的信息,但并不多关于如何将它用于我更有限的目的 - 只需进行预测,将数据库作为给定的(当然,如果预测足够可靠,我最终可能会切换到使用它们也可以在查询可能采用的替代形式之间进行选择,但是,那是为了 future :现在,我很乐意向用户展示用于上述目的的性能猜测)。

任何指针...?

最佳答案

EXPLAIN 不会告诉您查询需要多长时间。充其量你可以用它来猜测两个查询中哪一个可能更快,但除非其中一个显然写得很糟糕,否则即使这样也很难。

您还应该注意,如果您使用子查询,即使运行 EXPLAIN 也可能很慢(在某些情况下几乎与查询本身一样慢)。

据我所知,MySQL 没有提供任何方法来估计查询运行所需的时间。您能否记录每个查询的运行时间,然后根据过去类似查询的历史建立一个估计值?

关于mysql - 如何使用 EXPLAIN *预测 * MySQL 查询的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com