gpt4 book ai didi

postgresql:将多个图像插入 bytea 列?

转载 作者:行者123 更新时间:2023-11-29 14:20:55 25 4
gpt4 key购买 nike

我知道您可以将图像文件存储到 bytea 列,但是如果您需要在该列中存储与该行关联的多个图像怎么办?您是否被迫创建另一个引用该行的表?我试图避免这种情况,因为每一行都是表格数据的一部分,我需要一个图像以指定的特定列顺序出现,但我无法提前知道会有多少图像或列的顺序。

文字 |文字 |图片 |文字 |图片

也可能是

图片 |文字 |图片 |文字 |文字

图片 |图片 |图片 |图片 |图片 |文字 |文字

最佳答案

可以创建一个包含 bytea 值数组的列,例如:

CREATE TABLE test ( id serial, images bytea[], .. other columns ...);

但是,我建议创建一个单独的表来包含图像,原因如下:

  1. 在查询图片时会提供更大的灵 active

  2. 在更新图像、插入图像、删除图像等方面,它很可能会表现得更好。

  3. 根据您的用例,查询的性能也可能会更好。

性能方面的原因与列的存储方式有关。如果一行的总大小小于页面大小(通常为 8KB),那么这些列将以内联方式存储。如果大小超过 8KB,那么最大的列将被压缩和/或移动到单独的“TOAST”表中。

如果您将所有图像存储在列内的数组中,则:

  1. 从数据库的角度来看,您将永远只能检索所有图像,而不仅仅是其中之一。即使您可以选择单个图像,数据库也必须将所有图像读入内存才能为您找到该图像。

  2. 如果行的大小为 <8kb(即,如果图像很小),那么如果数据库不将图像读入内存,您甚至无法查询其他表列。

  3. 添加、更新或删除图像将导致所有图像被重写(因为它们都存储在数组中)。

关于postgresql:将多个图像插入 bytea 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com