我有一个包含 10 万行的表数据库。大约有 30 列,其中 28 列是 varchars/tiny text,其中一列是 int 主键,其中一列是 blob。
我的问题是,就性能而言,将 blob 与表的其余部分分开并将它们存储在自己的表中并且外键约束为主 ID 会更好吗?
该表最终将变成一个 iOS 核心数据的 sqlite 持久存储,并且许多搜索/过滤将基于 NSPredicate 为较轻的 varchar 列完成。
抱歉,如果这太主观了,但我认为有一个推荐的方法。
谢谢!
最佳答案
如果您执行 SELECT * FROM table
(如果您实际上不需要 BLOB 字段,则不应该这样做)那么是的,查询会更快,因为在这种情况下,带有 BLOB 的页面会'被感动。
如果您经常执行 SELECT f1, f2, f3 FROM table
(所有字段都是非 BLOB)那么是的,将 BLOBS 存储在单独的表中将使查询更快,原因相同 - MySQL 将不得不读取更少的页面。
但是,如果经常选择 BLOB,那么将其分开保存就没有意义。
关于MySQL 数据库规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21761790/