我正在帮助维护一个程序,该程序本质上是一个用于大型复杂 MySQL 数据库的友好只读前端——该程序根据用户输入构建临时 SELECT 查询,将查询发送到数据库,获取结果,对它们进行后处理,并将它们很好地显示给用户。
我想为构造查询的预期性能添加某种形式的合理/启发式预测——有时用户无意中进行了不可避免地需要很长时间的查询(因为他们会返回巨大的结果集,或者因为他们'重新“违背”数据库索引的方式),我希望能够向用户显示一些“有点可靠”的信息/猜测查询需要多长时间。它不一定是完美的,只要它不会变得如此糟糕和频繁地与现实脱节,以至于导致用户学会无视它的“哭狼”效应;-) 基于此信息,用户可能决定去喝杯咖啡(如果估计是 5-10 分钟),去吃午饭(如果是 30-60 分钟),
我对 MySQL 的 EXPLAIN 语句不是很熟悉——我看到了很多关于如何使用它来优化查询或数据库架构、索引等的信息,但关于如何将它用于我更有限的目的的信息不多- 简单地进行预测,将数据库作为给定(当然,如果预测足够可靠,我最终可能会切换到使用它们也可以在查询可能采用的替代形式之间进行选择,但是,这是为了未来:现在,出于上述目的,我很乐意向用户展示性能猜测)。
任何指针...?