我打算将图片存储在数据库(MySQL 5.6.15,InnoDB)中作为MEDIUMBLOB,我想知道哪种表结构更有效。
对于每张图片,我都会存储校验和,每次检查校验和时,都要查看图片是否需要更新。考虑到每次都会访问校验和,但是图片可能不是,如果我将它们存储在一个表中或两个单独的表中,它是否会产生差异(性能):
| user_id |图片| picture_checksum |
或
| user_id |图片|
| user_id | picture_checksum |
(P.S。:我不想进入“文件系统与数据库”的争论,我将会使用数据库,这几乎已经解决了。)
答案 0 :(得分:1)
单个表格是这里的方式,因为数据本质上是相关的,并且您没有X对多关系。
在进行简单查询时,请注意不要加载图像。 SELECT *
如果你从不使用这些数据,会导致你的连接上的兆字节数据大幅下降,这是一个坏主意。
相反,尽可能准确:
SELECT picture_checksum FROM pictures WHERE user_id=?
作为一个注释,你可能想要使用比SHA1更强大和抗冲突的东西,而不是简单的校验和。