日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql之多列索引

發(fā)布時間:2023/12/19 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql之多列索引 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

mysql的多列索引是經(jīng)常會遇到的問題,怎樣才能有效命中索引,是本文要探討的重點。

?

多列索引使用的Btree,也就是平衡二叉樹。簡單來說就是排好序的快速索引方式。它的原則就是要遵循左前綴索引。

多個索引從左邊往右都使用上,才能使用到整個多列索引。

?

下面我先建立一個簡單的表做實驗:

create table t6 (

c1 char(1) not null default '',

c2 char(1) not null default '',

c3 char(1) not null default '',

c4 char(1) not null default '',

c5 char(1) not null default '',

key(c1,c2,c3,c4,c5)

) engine myisam charset utf8;

再分別insert into一些數(shù)據(jù)。

?

分別做以下一些查詢:

1.

explain select * from t6 where c1='a' and c2='b' and c4>'a' and c3="c" \G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t6
type: range
possible_keys: c1
key: c1
key_len: 12
ref: NULL
rows: 2
Extra: Using where
1 row in set (0.00 sec)

這里使用到了c1,c2,c3,c4索引,特別c4是一個范圍查詢,所以type為range,依次c1,c2,c3被命中索引。

2.

explain select * from t6 where c1='a' and c4='a' order by c3,c2 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t6
type: ref
possible_keys: c1
key: c1
key_len: 3
ref: const
rows: 2
Extra: Using where; Using filesort
1 row in set (0.00 sec)

過程中先命中了c1,然后在order by c3,c2的時候由于先去use c3做排序,從而聯(lián)合索引斷了。using filesort表明沒有使用到多列合索引,而是做了文件內(nèi)排序。

?

3.

explain select * from t6 where c1='a' and c4='a' order by c2,c3 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t6
type: ref
possible_keys: c1
key: c1
key_len: 3
ref: const
rows: 2
Extra: Using where
1 row in set (0.00 sec)

?

反之命中c1索引后,先用c2排序,再是c3來排序,分別命中,最后是c4='a'做where查詢,使用到了多列索引。

轉(zhuǎn)載于:https://www.cnblogs.com/freephp/p/4783178.html

總結(jié)

以上是生活随笔為你收集整理的mysql之多列索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。