MySQL 查询性能

MySQL queries performance

我的数据库 catalogs 有 14000 条记录,100 列,只有 2 列的类型为 longtext。这个查询真的很慢 - 超过 40 秒

SELECT
    id,
    title,
    pdf
FROM
    catalogs
WHERE
    (shop_id = 2597)

为了实验,我创建了一个名为 new_catalogs 的新数据库,它具有相同的结构和数据,但我删除了 2 个长文本类型的列

运行 相同的查询速度加倍 - 20 秒。

为什么长文本字段会减慢查询速度?如何加速我当前的数据库,它必须包含这两列长文本?我没有 select 这 2 列得到。

使用 laravel 查询我得到了相同的结果。

LONGTEXT 列与其余列分开存储。额外的磁盘提取用于加载值。

当您将 LONGTEXT 列分开时,您是否随后获取了值?无论如何,这很慢?

你有INDEX(shop_id)吗?

Laravel 是否做了一些愚蠢的事情,比如预加载整个 table?

您将如何处理 PDF?如果您只将它们写入网页,那么以多种方式将其存储为文件会更有效,然后让 HTML 引用它。这可能会通过 <img src=...pdf>.

完成