获取具有文本数据类型慢查询的列

Get column with text datatype slow query

我有以下 table:

create table tbl_img
(
  id int,
  col_img text
);

我在col_img列中存储了图像。

当我尝试获取数据时:

select t1.id,t1.col1,t2.col_img
from tbl_test t1
left join tbl_img t2 on t1.img_id = t2.id;

获取数据需要超过 1 分钟的时间。如果我从列列表中删除 t2.col_img,它将在几毫秒内给出结果。

是否有任何解决方法可以提高性能?

如果从 SELECT 列表中删除 t2.col_img,PostgreSQL 足够聪明,知道它可以跳过左连接,因为 id on tbl_img 有一个唯一约束。

对于 t2.col_img,PostgreSQL 实际上必须执行连接,因此成本要高得多。

您几乎无法加快速度:

  • 增加 work_mem 希望获得散列连接(如果您还没有)

  • 获得更快的存储空间或更多的 RAM 来缓存数据