mysql的平均行长是否会影响其性能?

mysql的平均行长是否会影响其性能?,mysql,database,Mysql,Database,我应该担心在一行中保留许多列吗?或者这不是性能问题?多少是“多少”?如果由于不需要该特定列而有大量空值,那么将数据库规范化为具有较少空值数据点的更多表会更有效。但这并不重要。要(稍微)担心。拖行大小越大,一页磁盘上可以容纳的行就越少,因此随着行长度的增加,性能将受到影响 但不要过早地改变你的设计以避免长行——做正确的事情,然后担心它是否会成为一个问题。纯粹为了避免将来的“性能问题”而更改设计将是“过早优化”,这是一个致命的错误。我使用两个表来存储用户配置文件 满一 用户\ u mem,存储在My

我应该担心在一行中保留许多列吗?或者这不是性能问题?

多少是“多少”?如果由于不需要该特定列而有大量空值,那么将数据库规范化为具有较少空值数据点的更多表会更有效。但这并不重要。

要(稍微)担心。拖行大小越大,一页磁盘上可以容纳的行就越少,因此随着行长度的增加,性能将受到影响


但不要过早地改变你的设计以避免长行——做正确的事情,然后担心它是否会成为一个问题。纯粹为了避免将来的“性能问题”而更改设计将是“过早优化”,这是一个致命的错误。

我使用两个表来存储用户配置文件

  • 满一

  • 用户\ u mem,存储在MySql内存中,共6列:id、用户名、性别、聊天?pbs

  • 大多数查询只需要用户ID和姓名/昵称,有时还需要性别

    chat&pbs=如果这些cols为零,则如果用户有新消息,我不需要在繁重的表中查找


    在繁重的系统中工作正常。

    取决于。表是否已规范化?您是否有意取消规范化以加速特定查询?是否有您担心的特定查询?这确实取决于您尝试执行的操作,但一般来说,拥有大量列根本不是问题。@cen什么是规范化的?我有用户列,其中包含配置文件数据。此配置文件数据确实可以为空。因此,我最好创建user_meta table,而不是join?这取决于有多少。NULL并不是那么糟糕,但如果您有100万行200列,其中100行在90%的行中为NULL,则更明智的做法是将其正常化以减小大小。更像是20列和10 NUL在20列上没有任何性能影响。如果某些输入可以预测为空,那么将这些行拆分为一个单独的表是有意义的,方法是将其减少为类似“正常形式”的一个在数据库理论中。更多信息:问题是,若出现问题,将很难以有意义的方式迁移所有数据:解决问题的成本可能超过购买更快的硬件