一、MySQL最左匹配原則是什麼
MySQL最左匹配原則指的是在多個列上創建索引時,優化器只會使用最左邊的索引進行查詢。這是由B-Tree索引的特性所決定的。在B-Tree中,數據根據索引的順序排序存儲。如果想要查詢包含兩個列的索引,需要使用兩個列的查詢條件才能匹配索引。如果只使用其中一個列的查詢條件,則無法利用索引,需要全表掃描。
二、MySQL聯合索引最左匹配原則
MySQL聯合索引最左匹配原則是MySQL最左匹配原則的一種情況。在建立聯合索引時,MySQL會將多個列的值組合成一個值進行排序和查詢。如果不使用聯合索引中的最左邊的列,MySQL將會無法使用該索引。例如,如果在兩列上建立了聯合索引,第一列是性別(男/女),第二列是年齡,但是只使用年齡查詢條件,MySQL將會掃描整個表而無法使用該索引。
三、MySQL索引最左匹配原則
與MySQL最左匹配原則類似,MySQL索引最左匹配原則是指對於一個複合索引,在查詢時只能使用最左的索引列,如果左邊的索引列沒有被使用,則整個索引都不會被使用。
四、MySQL最左原則
MySQL最左原則指的是在使用多列索引時,可以從左邊開始省略索引列,但是不能交換索引列的順序。例如,在性別、年齡、地區的多列索引中,可以使用年齡、地區的查詢條件,但是不能使用地區、年齡的查詢條件。
五、索引最左匹配原則
索引最左匹配原則和MySQL最左匹配原則是相同的,都是對於一個複合索引,只能使用最左的索引列。這是因為在B-Tree索引中,數據是根據索引的排序方式存儲的,如果使用左邊的索引列查詢,則可以直接定位到數據的位置,而如果使用右邊的索引列查詢,則需要從根節點一直遍歷到底部葉子節點,效率不高。
六、MySQL聯合索引最左匹配原則5.7
MySQL 5.7版本開始,支持對於聯合索引的最左匹配優化。在這個版本中,如果查詢條件只使用了一個索引列,但是該列在聯合索引的最左邊,則MySQL可以使用該列的索引進行優化。
七、MySQL最左匹配原則的實現原理
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `gender` varchar(10) NOT NULL DEFAULT '', `age` tinyint(4) NOT NULL DEFAULT '0', `address` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `idx_demo` (`gender`,`age`,`address`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 該查詢將會使用到聯合索引 EXPLAIN SELECT * FROM test WHERE gender='男' AND age=30; -- 該查詢將會進行全表掃描 EXPLAIN SELECT * FROM test WHERE age=30;
在上述示例中,我們可以看到在test表中建立了一個聯合索引idx_demo,包含三列:gender、age、address。在查詢gender=’男’ and age=30條件時,MySQL會使用該聯合索引進行查詢。但是如果只查詢age=30,MySQL將會進行全表掃描。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/228723.html