如何在数据库中有效地存储图片?

时间:2014-04-16 15:53:44

标签: mysql

我打算将图片存储在数据库(MySQL 5.6.15,InnoDB)中作为MEDIUMBLOB,我想知道哪种表结构更有效。

对于每张图片,我都会存储校验和,每次检查校验和时,都要查看图片是否需要更新。考虑到每次都会访问校验和,但是图片可能不是,如果我将它们存储在一个表中或两个单独的表中,它是否会产生差异(性能):

  

| user_id |图片| picture_checksum |

  

| user_id |图片|

     

| user_id | picture_checksum |

(P.S。:我不想进入“文件系统与数据库”的争论,我将会使用数据库,这几乎已经解决了。)

1 个答案:

答案 0 :(得分:1)

单个表格是这里的方式,因为数据本质上是相关的,并且您没有X对多关系。

在进行简单查询时,请注意不要加载图像。 SELECT *如果你从不使用这些数据,会导致你的连接上的兆字节数据大幅下降,这是一个坏主意。

相反,尽可能准确:

SELECT picture_checksum FROM pictures WHERE user_id=?

作为一个注释,你可能想要使用比SHA1更强大和抗冲突的东西,而不是简单的校验和。