我的网站有一个帖子系统,有三种类型的帖子
我使用4个表来管理这些数据
发布到网站的每张图片,视频,重新发布都会有一个帖子行来保持帐号,评论等等。
我必须查询评论的次数或删除的内容。
我想知道
之间哪一个更好更快?
答案 0 :(得分:3)
与这些类型的问题一样,这个答案是“它取决于。”
我建议您尝试创建数据的VIEW,将4个表编译为单行,多列结果集。您甚至可以索引此视图,如果需要,还可以INSERT INTO
视图。这可以让您更好地了解如何为数据建模。
在一个极端你有:
另一方面,你有: *一个表不需要连接,并且只需要它就可以了 *但是,当您添加更多帖子类型时,存储在一个文件文件组中并且不受控制地增长的负担
在中间的某个地方,你有(索引)观点。
答案 1 :(得分:2)
“哪一个更好更快?”
我认为任何一个选项都不会更好和 - 一个表通常更快,多个表“更好”,因为它更容易维护而且不会导致重复数据。如果检索速度是您的主要关注点,那么可以证明一个表是合理的,否则我会坚持规范化 http://en.wikipedia.org/wiki/Database_normalization
即使有多个表,好的索引也会对检索速度产生巨大影响,而且正如其他人所说的那样可能值得考虑一个视图/存储过程来将数据整合在一起
答案 2 :(得分:2)
对此没有简单的答案。
如果您在多个表上拆分数据,那么您需要编写更复杂的SQL,但数据库管理员可以将每个表放在不同的磁盘上,这样加载数据会更快。
搜索性能不受此影响,因为索引可以放在不同的磁盘上。
所以这取决于数据库体系结构,数据量,索引以及如何将它们分配给磁盘以及数据库优化器是否会选择正确的策略。
答案 3 :(得分:1)
使用单个表,可以消除JOIN的开销,因此可能会更快。
但是,根据您的设置,您可以使用“查看”或“存储过程”将数据从不同的表中拉出来。这些可以提高JOIN的效率,因为可以缓存/优化查询执行计划