mysql - 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 文本。
有谁知道是什么原因导致这种情况发生?
解决方案
我将扩展我的评论。
当一个数据库报告完成一个查询的时间时,那通常是只在数据库内部的时间。它可能包括也可能不包括编译查询的时间。它不包括返回结果的时间。
由于数据上的文本列,您的数据行非常宽。因此,您遇到在数据库中运行查询非常快的情况。但是生成的行非常大——因此将它们返回给用户需要很多时间。
也许使时间更复杂的是,您可能正在查看何时返回所有行,而不仅仅是返回第一行(有时这也与时间混淆)。
无论如何,如果您不需要宽列,只需选择您确实需要的列。这对查询处理时间影响不大,但可能对返回结果的时间产生很大影响。
推荐阅读
- java - setId() 用于以编程方式生成的片段
- flask - 使用服务器端处理通过数据表显示大数据帧
- bash - 无法让脚本在容器启动时运行
- java - 在同一对象上执行不同方法时使 2 个线程交替
- sql-server - 在 SQL 中使用主表中始终更新的数据创建副本表的最佳方法
- javascript - bson 的 ObjectId 是否有 tryParse 函数?
- java - 使枚举不区分大小写
- javascript - 开发人员中的 Acumatica API 登录限制
- c# - 如何在 DbContext EF 多线程中开始第二个操作之前等到完成第一个操作
- python - 用 BS 解析不一致的多级 XML