优化数据库结构

要点

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

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

  • 表的主键应该尽可能短

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

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

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

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

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

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

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

参考文章

Optimizing Database Structure

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库结构优化 选择合适的数据类型 数据类型的选择,重点在于合适二字,如何确定选择的数据类型是否合适? 1.使用可...
    LeeShun阅读 172评论 0 1
  • MySQL技术内幕:SQL编程 姜承尧 第1章 SQL编程 >> B是由MySQL创始人之一Monty分支的一个版...
    沉默剑士阅读 2,472评论 0 3
  • 计算机诞生后,数据开始在计算机中存储并计算,并设计出了数据库系统,数据库系统解决的问题:持久化存储,优化读写,保证...
    LittlePy阅读 795评论 0 0
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,055评论 0 19
  • 我有一个梦想, 我梦想有一天,在佐治亚的红山上,昔日奴隶的儿子将能够和昔日奴隶主的儿子坐在一起,共叙兄弟情谊。 我...
    一路有你ing阅读 302评论 0 0