<深入浅出MySQL>读书笔记之索引设计
Contents
InnoDB表的限制
MyISAM 表的限制
MySQL 5.7 MyISAM-Storage-Engine
索引注意
- 索引的限制是以
字节
为单位的, 而表中的varchar等这些是以字
符为单位的.
索引原则
搜索的索引列,不一定是所要选择的列.最适合索引的列是出现在WHERE子句中的列,或连接子句中指定的列,而不是出现在SELECT关键字后的选择列表中的列
使用唯一索引。考虑某列中值的分布。索引的列的基数越大,索引的效果越好
使用短索引。如果对字符串列进行索引,应该指定一个前缀长度,只要有可能就应该这样做。
利用最左前缀
不要过度索引
对于InnoDB存储引擎的表,记录默认会按照一定的顺序保存,如果有明确定义的主键,则按照主键顺序保存。如果没有主键,但是有唯一索引,那么就是按照唯一索引的顺序保存。如果既没有主键又没有唯一索引,那么表中会自动生成一个内部列,按照这个列的顺序保存。
另外,还需要注意,InnoDB 表的普通索引都会保存主键的键值,所以主键要尽可能选择较短的数据类型,可以有效地减少索引的磁盘占用,提高索引的缓存效果.
当对索引字段进行范围查询的时候,只有BTREE索引可以通过索引访问
注意如果需要访问大部分行,顺序读取要快得多,因为此时应避免磁盘搜索