【问题标题】:MYSQL performance issue - 1 table with one row vs 1 table with many rowsMYSQL 性能问题 - 1 个单行表与 1 个多行表
【发布时间】:2013-01-21 12:58:58
【问题描述】:

我对如何在 MYSQL 表中存储数据有疑问。

假设我写了 10k 个帖子,每个帖子 400 个字。

将每个帖子(400 个字)存储在一行中会更好吗? 或者将其拆分为 10 行(每行 40 个单词)? 还是分成 100 行(每行 4 个字)?

哪种结构能给我带来最好的性能、更轻的重量、更好的加载时间等等? 更重要的是 - 您有多少行(1 或 10 或 100)或行中有多少数据(400 或 40 或 4)?

【问题讨论】:

  • 这是什么意思?如果你有 10k 个帖子,考虑它不重要吗?
  • 不要把属于一起的东西分开。
  • 问题是它是否有助于提高性能...如果每个人都说它不值得而且令人信服,我不会分裂,但我问的是它的性能方面。什么是更好的?有较小的行但很多或较大的行但很少?
  • 过早的优化是万恶之源

标签: mysql sql performance


【解决方案1】:

更多的行会使查询速度变慢。除此之外,通过拆分帖子增加的复杂性是不值得的。新开发人员了解正在发生的事情所花费的时间会增加,而且更复杂的代码更有可能在现在或将来出现错误。

将每个帖子排成一行,对其进行分析,然后在发现性能问题时进行更改。

【讨论】:

  • 但是假设我在拆分帖子时没有问题,它会给我带来更好的性能吗?因为也许它不会,然后我没有问题,我按正常方式走。但如果是这样,我想知道。想想一个 10k 帖子网站
  • @tomastsc 你有性能问题吗?如果没有,不要设计解决不存在问题的方法
  • 我过去有,但现在我不再运行这个网站了。我仍然想知道答案,以便下次在我的下一个项目中解决它。
  • @tomastsc 我看不到添加更多行来加快查询速度。尤其是在您过滤它们时。
  • @tomastsc 这不值得,因为它不会给您带来性能提升,而且会使代码变得不必要地复杂。
【解决方案2】:

您的问题没有明确的答案。

考虑到在数据库中存储消息/帖子的任务,我假设大多数人会从设计表格开始,以每行存储一条消息。也许在对要存储的数据进行一些分析之后,会决定将每条消息分成若干页,每页占用 400 个单词。没有这个分析,你就没有问题要解决。

说实话,您最好自己对这个主题进行一些研究。阅读关系数据库背后的理论。尝试制作一个简单的系统来创建和加载分成多个页面的帖子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2021-04-10
    • 2020-08-13
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2017-07-10
    相关资源
    最近更新 更多