如何记录包含大量结果的查询


How to log queries with large number of results

多年来我一直在Drupal中编写网站,有时我会注意到代码中我只查询一行的内容,但我忘记使用LIMIT,因此结果集可能会变得不必要地大。

虽然避免此问题的最佳方法是不要忘记这些类型的查询的这一步,但我仍然是人类,因此从长远来看,这是不切实际的乐观。

我想尽可能减少MySQL和PHP之间传输的数据量,为此,我需要知道哪些查询返回大型结果集,以便我可以在代码中找到它们并进行适当的修复。

我知道查询日志很慢,但是具有大型结果集的查询不一定很慢。

有没有简单的方法可以使用Drupal钩子或其他方式来做到这一点?

您可以使用 devel 模块来显示页面上正在执行的查询。

启用模块后,转到Administration > Configuration > Development > Devel Settings并确保Display query log已打开。您应该会在页面底部看到查询日志。