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优化和索引的主要内容,如果未能解决你的问题,请参考以下文章

轻松优化MySQL-之索引优化2 附赠送优化口诀

三高Mysql - Mysql索引和查询优化(偏实战部分)

Mysql性能优化--MySQL优化

mysql索引优化和sql语句优化

数据库优化—— MySQL索引优化

MySQL索引和查询优化