我正在帮助维护一个程序,它基本上是一个友好的只读前端,用于一个庞大而复杂的MySQL数据库。该程序根据用户的输入构建即席SELECT查询,将查询发送到数据库,获取结果,对其进行后处理,并将其漂亮地显示给用户。
我想为构建的查询的预期性能添加某种合理/启发式的预测 - 有时用户会无意中创建一些不可避免需要很长时间才能返回结果的查询(因为它们将返回巨大的结果集,或者因为它们“违背”了数据库索引的规则),我想能够向用户显示一些有关查询可能需要多长时间的“相当可靠”的信息/猜测。 它不必完美,只要它不会频繁大幅偏离实际情况,导致用户学会忽略它;-) 根据这些信息,用户可以决定去喝咖啡(如果估计时间为5-10分钟),去吃午饭(如果是30-60分钟),取消查询并尝试其他方法(也许是更严格的信息请求限制)等等。
我不太熟悉MySQL的EXPLAIN语句 - 我看到很多关于如何使用它来优化查询或数据库的模式,索引等的信息,但是对于我的更有限的目的,如何使用它并没有太多信息 - 仅作出预测,假设数据库已经存在(当然,如果预测足够可靠,我最终可能会切换到使用它们来选择查询可以采取的不同形式,但是,这是将来的事情:现在,我很高兴向用户显示性能猜测)。
有什么提示吗...?
我想为构建的查询的预期性能添加某种合理/启发式的预测 - 有时用户会无意中创建一些不可避免需要很长时间才能返回结果的查询(因为它们将返回巨大的结果集,或者因为它们“违背”了数据库索引的规则),我想能够向用户显示一些有关查询可能需要多长时间的“相当可靠”的信息/猜测。 它不必完美,只要它不会频繁大幅偏离实际情况,导致用户学会忽略它;-) 根据这些信息,用户可以决定去喝咖啡(如果估计时间为5-10分钟),去吃午饭(如果是30-60分钟),取消查询并尝试其他方法(也许是更严格的信息请求限制)等等。
我不太熟悉MySQL的EXPLAIN语句 - 我看到很多关于如何使用它来优化查询或数据库的模式,索引等的信息,但是对于我的更有限的目的,如何使用它并没有太多信息 - 仅作出预测,假设数据库已经存在(当然,如果预测足够可靠,我最终可能会切换到使用它们来选择查询可以采取的不同形式,但是,这是将来的事情:现在,我很高兴向用户显示性能猜测)。
有什么提示吗...?