优化数据库结构

要点

  • 设计表时,尽量减小表的大小,即尽可能使用最小的数据类型

  • 将列设为not null的,可以更好的利用这个列的索引,以及减少占用空间(1bit)

  • 表的主键应该尽可能短

  • 善用join,使得所有无冗余

  • 善用join,使得不经常访问的大型列(varcharvarbinarytextblob)拆分成单独的表,因为mysql检索一行的时候,会读取包含这一行的所有列的数据块

  • 如果不需要特定于语言的排序功能,可以使用二进制排序规则进行快速比较和排序操作

  • 在比较不同列的值时,尽可能使用相同的字符集和排序规则声明这些列,以避免在运行查询时发生字符串转换

  • 对于小于8KB的列,使用varbinary而不是blobgroup byorder by可以生成临时表,如果原始表不包含任何blob列,这些临时表可以使用memory存储引擎

  • mysql每张表最多有4096列,并且还具有以下限制:

    • 所有列的行长总和不能超过行大小限制
    • 存储引擎可能会施加其他限制,比如Innodb类型的表限制为1017
    • Functional key parts被实现为隐藏的虚拟生成的存储列,也计入表的行数中

参考文章

Optimizing Database Structure

你可能感兴趣的:(优化数据库结构)