[英]MySQL Database design - Storing Images - Single table or multiple tables
我目前正在使用一种产品,其中有不同类型的图像,例如产品图像,用户个人资料图片,徽标等。 我需要一个具有良好查询性能的数据库。
我想到了两个数据库设计。
选项1.-将所有图像存储在具有id,title,url_full,url_thumb,status和timestamp字段的单个表中
好处
缺点
选项2-在具有id,title,url_full,url_thumb,status和timestamp字段的不同表中存储不同类型的图像
好处
缺点
我的问题是,这是更好的方法。 优点和缺点是真正的问题。如果还有其他优点/缺点,请列出。 或者,如果还有其他上帝数据库设计,请提出建议。
请根据实际情况回答,那里有很多产品和用户。
这是从很长的评论开始的,所以我决定将其发布为答案。 对我来说,在不同的表中存储不同类型的图像听起来是个坏主意。 一方面,例如,如果以后出现新类型的类别,该设计将如何扩展? 这样一来,您就能应付任意数量的新图像表了吗? 同样,查询所有图像将需要一系列的联接或联合,这可能会很昂贵。
您提到了多图像表模式的以下优点:
一个部分中增加的记录数不会影响另一部分的查询速度
如果将单个图像表与在type
列上的索引一起使用,则增加一种类型的记录数不一定会增加对第二种类型的图像的查询。 这是您提供的单个图像表的缺点:
如果产品图像很多而用户图像较少,则由于产品数量巨大,用户图像查询将变慢。
的确,添加更多记录通常会降低查询速度。 但是,在类型上具有适当的索引将大大减少此问题。
具有适当索引的单个图像表似乎要好得多。
您将如何交付图像? 如果通过<img src=http:...>
进行,则只有一个答案:单独的文件。
是的,缩略图可以通过其他机制完成,例如转换为base64并包含在img
标签中。 如果页面上有很多缩略图,这可能是最好的。
但是将缩略图与要查询的列放在同一表中可能会降低性能。 因此,我们需要查看查询和表架构(到目前为止)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.