濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > mysql索引最左原則實(shí)例代碼

mysql索引最左原則實(shí)例代碼

熱門標(biāo)簽:400電話可以免費(fèi)申請嗎 悟空科技電話機(jī)器人 電銷卡外呼系統(tǒng)供應(yīng)商 騰訊地圖標(biāo)注提升 美國反騷擾電話機(jī)器人 銅陵防封電銷卡 真人語音電話機(jī)器人 怎么在地圖標(biāo)注位置生成圖片 福建外呼系統(tǒng)定制化

前言

最近在看MySQL索引的知識(shí),看到組合索引的時(shí)候,有一個(gè)最左側(cè)原則,通過查找相關(guān)資料深入學(xué)習(xí)了下,下面話不多說了,來一起看看詳細(xì)的介紹吧

建表

CREATE TABLE `user` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(10) DEFAULT NULL,
 `sex` tinyint(1) DEFAULT NULL,
 `age` tinyint(2) DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `Index_user` (`name`,`age`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

測試sql

第一種

mysql> explain SELECT * FROM `user` where name="tom" \G
*************************** 1. row ***************************
   id: 1
 select_type: SIMPLE
  table: user
 partitions: NULL
   type: ref
possible_keys: Index_user
   key: Index_user
  key_len: 43
   ref: const
   rows: 1
  filtered: 100.00
  Extra: NULL

第二種

mysql> explain SELECT * FROM `user` where age=18 and name="tom" \G
*************************** 1. row ***************************
   id: 1
 select_type: SIMPLE
  table: user
 partitions: NULL
   type: ref
possible_keys: Index_user
   key: Index_user
  key_len: 45
   ref: const,const
   rows: 1
  filtered: 100.00
  Extra: NULL

第三種

mysql> explain SELECT * FROM `user` where age=18 \G
*************************** 1. row ***************************
   id: 1
 select_type: SIMPLE
  table: user
 partitions: NULL
   type: ALL
possible_keys: NULL
   key: NULL
  key_len: NULL
   ref: NULL
   rows: 3
  filtered: 33.33
  Extra: Using where
1 row in set, 1 warning (0.00 sec)

第四種

mysql> explain SELECT * FROM `user` where name="tom" and age=18 \G
*************************** 1. row ***************************
   id: 1
 select_type: SIMPLE
  table: user
 partitions: NULL
   type: ref
possible_keys: Index_user
   key: Index_user
  key_len: 45
   ref: const,const
   rows: 1
  filtered: 100.00
  Extra: NULL
1 row in set, 1 warning (0.00 sec)

總結(jié)

由此可見,只有sql中where包含聯(lián)合索引的首個(gè)字段的查詢才能命中索引,這個(gè)叫索引的最左匹配特性。 聯(lián)合索引的使用在寫where條件的順序無關(guān),mysql查詢分析會(huì)進(jìn)行優(yōu)化而使用索引。但是減輕查詢分析器的壓力,最好和索引的從左到右的順序一致。

b+樹的數(shù)據(jù)項(xiàng)是復(fù)合的數(shù)據(jù)結(jié)構(gòu),比如(name,age,sex)的時(shí)候,b+樹是按照從左到右的順序來建立搜索樹的,比如當(dāng)(張三,20,F)這樣的數(shù)據(jù)來檢索的時(shí)候,b+樹會(huì)優(yōu)先比較name來確定下一步的所搜方向,如果name相同再依次比較age和sex,最后得到檢索的數(shù)據(jù);但當(dāng)(20,F)這樣的沒有name的數(shù)據(jù)來的時(shí)候,b+樹就不知道第一步該查哪個(gè)節(jié)點(diǎn),因?yàn)榻⑺阉鳂涞臅r(shí)候name就是第一個(gè)比較因子,必須要先根據(jù)name來搜索才能知道下一步去哪里查詢。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 深入淺析Mysql聯(lián)合索引最左匹配原則
  • MySQL組合索引與最左匹配原則詳解

標(biāo)簽:湖南 臨汾 湖北 云浮 白銀 聊城 烏海 武威

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql索引最左原則實(shí)例代碼》,本文關(guān)鍵詞  mysql,索引,最左,原則,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql索引最左原則實(shí)例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql索引最左原則實(shí)例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    松原市| 中方县| 澄江县| 鸡东县| 巫山县| 衡南县| 上栗县| 东海县| 武安市| 康乐县| 仁寿县| 湖南省| 额济纳旗| 新河县| 潮安县| 孝义市| 始兴县| 皮山县| 梨树县| 双桥区| 巩留县| 休宁县| 井研县| 理塘县| 龙口市| 富锦市| 公主岭市| 寿宁县| 淮滨县| 双城市| 乌什县| 和政县| 巴东县| 晋州市| 原平市| 贵阳市| 兴安县| 彰化市| 巨野县| 金沙县| 曲阳县|