不断插入和更新。拥有一张大桌子或两张小桌子会更好吗?

时间:2010-01-22 02:38:29

标签: php mysql

这些表将不断插入新行或更新。

我有一个大表,包含视频网址,标题,描述,标签,视图,评级,评论

我应该把它分成两个较小的表

id视频网址,标题,说明

并将此链接到上面。

id video_id,标签,观点,评分,评论

3 个答案:

答案 0 :(得分:5)

听起来你的表格不是normalized。您希望避免存储重复数据,除非它具有一些性能优势。复制信息将导致更大的记录和索引大小,这可能会增加磁盘搜索时间。

如果您列出的列与听起来一样不言自明,那么我会把它分成三个表:

  • 视频 - videoId,url,title,description,rating,views
  • video_tags - videoId,tag
  • video_comments - videoId,comment

这将允许您为每个视频创建一个条目,仅存储一次主要信息。然后,您可以将视频与多个标签和多个评论相关联。

答案 1 :(得分:0)

您所描述的内容称为“垂直分区”。它的好处取决于您是否将可变大小的列隔离到一个表中。您还可以水平分区表。请阅读Improving Database Performance with Partitioning以获取有关哪种(如果有)分区类型有用的更多信息。

正如其他人所说,首先将数据标准化,然后仅在您无法获得所需性能时才进行非规范化。

答案 2 :(得分:0)

数据集越大,读取,写入和更新的速度就越慢。您可以通过将其拆分为看起来合乎逻辑的多个子集来最小化这一点。看看WordPress如何存储其标签和评论。