MySQL 数据库规范化

标签 mysql ios sql sqlite core-data

我有一个包含 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/

相关文章:

java - 尝试创建 SQL 数据库时没有合适的驱动程序

mysql - 通过外键外部引用使用过滤器汇总子查询注释

mysql - 触发减少库存

mysql - 反转分组查询的序列号

ios - 了解如何从 IB 初始化自定义 UIView

mysql - 以下关系中的候选键是什么

php - 在 cakephp 中显示带有法语口音的数据

objective-c - UIResponder 链题

ios核心数据回滚

MySQL 复制数据转储脚本不起作用