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>
.
完成
我的数据库 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>
.