濮阳杆衣贸易有限公司

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

mysql索引最左原則實例代碼

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

前言

最近在看MySQL索引的知識,看到組合索引的時候,有一個最左側(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)合索引的首個字段的查詢才能命中索引,這個叫索引的最左匹配特性。 聯(lián)合索引的使用在寫where條件的順序無關(guān),mysql查詢分析會進(jìn)行優(yōu)化而使用索引。但是減輕查詢分析器的壓力,最好和索引的從左到右的順序一致。

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql索引最左原則實例代碼》,本文關(guān)鍵詞  mysql,索引,最左,原則,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql索引最左原則實例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql索引最左原則實例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    廊坊市| 胶州市| 中西区| 麦盖提县| 城步| 册亨县| 四平市| 海安县| 白银市| 罗定市| 霸州市| 黄梅县| 邮箱| 华容县| 同心县| 深泽县| 宁强县| 宁海县| 乌恰县| 米泉市| 临漳县| 阿巴嘎旗| 含山县| 韶关市| 敖汉旗| 繁昌县| 新民市| 晋江市| 敦化市| 交城县| 五指山市| 江门市| 郸城县| 大港区| 改则县| 黄平县| 海南省| 寿阳县| 遵义市| 中牟县| 西林县|