自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個(gè)例子!教您徹底理解索引的最左匹配原則!

數(shù)據(jù)庫(kù) MySQL
在聯(lián)合索引中,只有左邊的字段被用到,右邊的才能夠被使用到。我們?cè)诮?lián)合索引的時(shí)候,區(qū)分度最高的在最左邊。

最左匹配原則的定義

簡(jiǎn)單來講:在聯(lián)合索引中,只有左邊的字段被用到,右邊的才能夠被使用到。我們?cè)诮?lián)合索引的時(shí)候,區(qū)分度最高的在最左邊。

簡(jiǎn)單的例子

創(chuàng)建一個(gè)表

CREATE TABLE `user` (
`id` INT NOT NULL AUTO_INCREMENT,
`code` VARCHAR(20) COLLATE utf8mb4_bin DEFAULT NULL,
`age` INT DEFAULT '0',
`name` VARCHAR(30) COLLATE utf8mb4_bin DEFAULT NULL,
`height` INT DEFAULT '0',
`address` VARCHAR(30) COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_code_age_name` (`code`,`age`,`name`),
KEY `idx_height` (`height`)
)

建立聯(lián)合索引:idx_code_age_name。

該索引字段的順序是:

code

age

name

然后插入一組數(shù)據(jù)。

INSERT INTO 數(shù)據(jù)庫(kù).`user` (id,CODE,age,NAME,height,address) VALUES(DEFAULT,'1002',40,'kevin',180,'北京市');

以下會(huì)走索引。

select * from user where code='1002';
select * from user where code='1002' and age=40
select * from user where code='1002' and age=401 and name='kevin';
select * from userwhere code = '1002' and name='kevin';

我們通過 EXPLAIN加上面的任意語(yǔ)句執(zhí)行。

EXPLAIN SELECT * FROM USER WHERE CODE = '1002' AND NAME='kevin';

都會(huì)看到 type值 為ref。

以下不會(huì)走索引。

select * from user where age=21;
select * from user where name='Kevin';
select * from user where age=21 and name='Kevin';

我們通過 EXPLAIN加上面的任意語(yǔ)句執(zhí)行,會(huì)看到type值為all。

大家可以看到where 從code(從左到右依次是:code、age、name)的聯(lián)合索引,開始查詢就會(huì)走索引,如果不從code開始就不會(huì)走索引!即只有左邊的字段被用到,右邊的才能夠被使用到。

explain 的常用type值

這里先簡(jiǎn)單的說一下explain,explain即執(zhí)行計(jì)劃,使用explain關(guān)鍵字可以模擬優(yōu)化器執(zhí)行sql查詢語(yǔ)句,從而知道MySQL是如何處理sql語(yǔ)句。explain主要用于分析查詢語(yǔ)句或表結(jié)構(gòu)的性能瓶頸。

explain 的常用type值含義如下:

  •  "ALL"表示全表掃描,沒有使用索引。
  • "index"表示使用了索引,但不是覆蓋索引(即查詢中使用了索引,但還需要回表獲取數(shù)據(jù))。
  • "range"表示使用了覆蓋索引(即查詢中直接從索引中獲取了所需數(shù)據(jù),無需回表)。
  •  "ref"表示使用了索引(可能是覆蓋索引或非覆蓋索引),并使用了一個(gè)或多個(gè)列進(jìn)行比較。
  •  "eq_ref"表示使用了唯一索引,并且只使用了等于操作符進(jìn)行比較。
責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2022-10-13 09:43:31

MySQL索引聯(lián)合索引

2021-07-09 06:11:37

Java泛型Object類型

2024-03-05 18:07:44

Java并發(fā)索引

2010-10-15 13:57:55

MySQL源碼安裝

2020-03-26 17:00:53

HashMapputJava

2009-06-18 15:53:37

Hibernate B

2009-06-11 14:48:48

jbpm工作流引擎jbpm例子

2023-03-14 08:02:14

靜態(tài)路由動(dòng)態(tài)路由設(shè)備

2024-01-25 11:41:00

Python開發(fā)前端

2010-10-12 14:53:31

mysql索引優(yōu)化

2024-01-08 13:40:00

并發(fā)安全? 數(shù)量

2010-11-16 09:49:22

Oracle重建索引

2010-10-13 15:59:21

MySQL索引

2010-11-23 14:19:12

MySQL注冊(cè)表

2024-07-01 00:00:02

2010-09-08 09:41:37

SQL刪除注冊(cè)表

2010-09-28 11:07:37

SQL索引

2010-10-26 16:54:16

oracle全文索引

2011-08-02 12:46:46

Oracle數(shù)據(jù)表建立索引

2018-01-02 09:44:37

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)