首页 > 解决方案 > MySQL 查询执行时间快,但取行慢?

问题描述

当我在 phpmyadmin 上运行此查询时,获取结果大约需要 30 秒,但一旦成功加载结果,它会显示“查询耗时 0.5029 秒”。

如果加载结果需要 30 秒,为什么会显示“查询需要 0.50 秒”?

我的查询:

SELECT * FROM `documents` WHERE disable=0 AND author=7 AND MATCH(text) AGAINST('"chocolate"')

我正在搜索的字段(名为“text”)的字段类型为“mediumtext”,每个文本行包含大约 200kb 的文本。表的总大小为 15,000 行和 1.5GB 文本。

有谁知道是什么原因导致这种情况发生?

标签: mysqlsql

解决方案


我将扩展我的评论。

当一个数据库报告完成一个查询的时间时,那通常是只在数据库内部的时间。它可能包括也可能不包括编译查询的时间。它不包括返回结果的时间。

由于数据上的文本列,您的数据行非常宽。因此,您遇到在数据库中运行查询非常快的情况。但是生成的行非常大——因此将它们返回给用户需要很多时间。

也许使时间更复杂的是,您可能正在查看何时返回所有行,而不仅仅是返回第一行(有时这也与时间混淆)。

无论如何,如果您不需要宽列,只需选择您确实需要的列。这对查询处理时间影响不大,但可能对返回结果的时间产生很大影响。


推荐阅读