1. 程式人生 > >mysql優化和索引

mysql優化和索引

索引 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優化和索引