MySQL 建表的优化策略 目录
字符集的选择 1
主键 1
外键 2
索引 2
以下情况适合于创建索引 2
以下的情况下不适合创建索引 3
联合索引 3
索引长度 4
特殊字段 4
冗余字段 4
分割字段 4
BLMySQL 建表的优化策略 目录
字符集的选择 1
主键 1
外键 2
索引 2
以下情况适合于创建索引 2
以下的情况下不适合创建索引 3
联合索引 3
索引长度 4
特殊字段 4
冗余字段 4
分割字段 4
BLOB 和 CLOB 5
特殊 5
表格分割 5
使用非事务表类型 5
字符集的选择 如果确认全部是中文,不会使用多语言 以及中文无法表示的字符,那么 GBK 是
首选。
采用UTF-8编码会占用3个字节,而GBK 只需要 2个字节。
主键 尽可能使用长度短的主键 系统的自增类型 AUTO_INCREMEN, 而不 是使用类似uuidO等类型。如果可以使 用外键做主键,则更好。比如1:1 的关 系,使用主表的id作为从表的主键。
主键的字段长度需要根据需要指定。
tinyint 从 2 的 7 次方-1 :-128 到 127 smallint 从 2 的 15次方-1 :-32768 到 32767
mediumint 表示为 2 的 23 次方-1: 从
-8388608 到 8388607
int 表示为 2的31次方-1
bigint 表示为 2的63次方-1 在主键上无需建单独的索引,因为系统 内部为主键建立了聚簇索引。 允许在其它索引上包含主键列。
外键
? 外键会影响插入和更新性能,对于批 量可靠数据的插入,建议先屏蔽外键检 查。
? 对于数据量大的表,建议去掉外键, 改由应用程序进行数据完整性检查。
? 尽可能用选用对应主表的主键作作为 外键,避免选择长度很大的主表唯一键 作为外键。
? 外键是默认加上索引的
索引 创建索引,要在适当的表,适当的列创 建适当数量的适当索引。在查询优先和 更新优先之间做平衡。
以下情况适合于创建索引
? 在经常需要搜索的列上,可以加快搜 索的速度 ? 在作为主键的列上,强制该列的唯一 性和组织表中数据的排列结构
? 在经常用在连接的列上,这些列主要 是一些外键,可以加快连接的速度
在经常需要根据范围进行搜索的列上
创建索引,因为索引已经排序,其指定
的范围是连续的 ? 在经常需要排序的列上创建索引,因 为索引已经排序,这样查询可以利用索 引的排序,加快排序查询时间 ? 在经常使用在 WHERE 子句中的列上面 创建索引,加快条件的判断速度。
以下的情况下不适合创建索引
? 对于那些在查询中很少使用或者参考 的列不应该创建索引。这是因为,既然 这些列很少使用到,因此有索引或者无 索引,并不能提高查询速度。相反,由 于增加了索引,反而降低了系统的维护 速度和增大了空间需求。
? 对于那些只有很少数据值的列也不应 该增加索引。这是因为,由于这些列的 取值很少,例如人事表的性别列,在查 询的结果中,结果集的数据行占了表中 数据行的很大比例,即需要在表中搜索 的数据行的比例很大。增加索引,并不 能明显加快检索速度。
? 对于那些定义为 text, image 和 bit 数据类型的
MySQL 建表的优化策略 来自淘豆网m.daumloan.com转载请标明出处.