要点
-
设计表时,尽量减小表的大小,即尽可能使用最小的数据类型
-
将列设为
not null
的,可以更好的利用这个列的索引,以及减少占用空间(1bit) -
表的主键应该尽可能短
-
善用
join
,使得所有无冗余 -
善用
join
,使得不经常访问的大型列(varchar
、varbinary
、text
、blob
)拆分成单独的表,因为mysql检索一行的时候,会读取包含这一行的所有列的数据块 -
如果不需要特定于语言的排序功能,可以使用二进制排序规则进行快速比较和排序操作
-
在比较不同列的值时,尽可能使用相同的字符集和排序规则声明这些列,以避免在运行查询时发生字符串转换
-
对于小于
8KB
的列,使用varbinary
而不是blob
。group by
和order by
可以生成临时表,如果原始表不包含任何blob
列,这些临时表可以使用memory
存储引擎 -
mysql每张表最多有4096列,并且还具有以下限制:
- 所有列的行长总和不能超过行大小限制
- 存储引擎可能会施加其他限制,比如
Innodb
类型的表限制为1017 -
Functional key parts
被实现为隐藏的虚拟生成的存储列,也计入表的行数中
网友评论