代码之家  ›  专栏  ›  技术社区  ›  user2189331

数据库可变长度文本字段是否应为2的幂?

  •  6
  • user2189331  · 技术社区  · 16 年前

    nvarchar[256] 性能将略优于 nvarchar[200] nvarchar[250]

    这有什么道理吗?

    谢谢

    5 回复  |  直到 9 年前
        1
  •  16
  •   Sean Reilly    16 年前

    事实并非如此。表在磁盘上以8k页的形式分配。从磁盘读取表时,整个页面将在一次IO操作中读取并存储在内存中。因此,列的长度根本不会影响内存对齐。事实上,对于非可变长度的数据类型,更短的数据类型肯定更好:nchar(200)列每页允许比nchar(256)列更多的行。这使得每个物理IO可以读取更多的行,这可以有一个 戏剧性的

        2
  •  5
  •   MusiGenesis    16 年前

    不,没有。

        3
  •  5
  •   Rob Walker    16 年前

    这里有太多的抽象层次在起作用,如果你试图在顶部优化一些只在最底层重要的东西,你将看不到任何好处,你可能只会让事情变得更糟!

        4
  •  1
  •   Andrew not the Saint    16 年前

    我想知道你的朋友是不是自己得出了结论,还是这是一个神话传播的案例。

    Things you know

        5
  •  1
  •   myplacedk    16 年前

    如果nvarchar[256]的性能比nvarchar[200]好,那么当您请求一个nvarchar[200]时,DBMS难道不只是生成一个nvarchar[256]吗?(但还是让它看起来像nvarchar[200])

    好的DBMS有一些非常高级的优化。我很确定他们也有所有简单的。