mysql优化和索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql优化和索引相关的知识,希望对你有一定的参考价值。
表的优化
1.定长与变长分离
如 int,char(4),time核心且常用字段,建成定长,放在一张表;
而varchar,text,blob这种变长字段适合单放一张表,用主键与核心表关联。
2.常用字段和不常用字段要分离
3.在 1 对多需要关联统计的字段上,添加冗余字段。
列类型选择原则
1.字段类型优先级 整型 > date,time > enum,char > varchar > blob,text
2.够用就行,不要慷慨,大的字段浪费内存,影响速度。
3.尽量避免用NULL,NULL不利于索引,需要特殊的字节来标注。
Enum列的说明
1.enum列在内部是用整型来存储的
2.enum列和enum列想关联速度最快
3.enum列比(var)char的弱势--在碰到与char关联时,要转化,要花时间
4.优势---当char非常长时,enum依然是整型固定长度,当查询的数据量越大时。enum的优势越明显。
索引提高查询的速度、提高排序的速度、提高分组的速度
聚簇索引和非聚簇索引
聚簇索引:btree
innodb引擎,索引和数据是在一块的,
innodb直接在主键索引的树中,储存行的数据,(既存储了主键值,又存储了行数据)。
innodb次索引指向对主键的引用。
优点:根据主键查询条目比较少时,不用回行(数据就在主键节点下)。
缺点:如果碰到不规则数据插入时,造成频繁的页分裂。
非聚簇索引:btree
myisam引擎, 索引和数据是分开的,
myisam索引指向行在磁盘上的位置
myisam中,主索引和次索引都指向物理行(磁盘位置)。
以上是关于mysql优化和索引的主要内容,如果未能解决你的问题,请参考以下文章