91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么mysql優化器選擇了聚集索引

發布時間:2021-11-01 09:27:09 來源:億速云 閱讀:124 作者:iii 欄目:MySQL數據庫

本篇內容介紹了“為什么mysql優化器選擇了聚集索引”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

通過這個以下這個案例,來說明優化器在選擇索引時候的取舍。

查看表結構:

MySQL > show create table test2 \G
*************************** 1. row ***************************
       Table: test2
Create Table: CREATE TABLE `test2` (
  `id` bigint(16) NOT NULL AUTO_INCREMENT,
  `order_seq` bigint(16) NOT NULL,
  `order_type` int(11) DEFAULT NULL,
  `order_flag` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_id` (`id`),
  KEY `idx_id_orderseq` (`id`,`order_seq`)
) ENGINE=InnoDB AUTO_INCREMENT=15002212 DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)

查詢一:

MySQL > explain select id,order_seq from test2 where id>10000 and id<20000;
+----+-------------+-------+------------+-------+--------------------------------+-----------------+---------+------+-------+----------+--------------------------+
| id | select_type | table | partitions | type  | possible_keys                  | key             | key_len | ref  | rows  | filtered | Extra                    |
+----+-------------+-------+------------+-------+--------------------------------+-----------------+---------+------+-------+----------+--------------------------+
|  1 | SIMPLE      | test2 | NULL       | range | PRIMARY,idx_id,idx_id_orderseq | idx_id_orderseq | 8       | NULL | 18484 |   100.00 | Using where; Using index |
+----+-------------+-------+------------+-------+--------------------------------+-----------------+---------+------+-------+----------+--------------------------+
1 row in set, 1 warning (0.00 sec)

優化器選擇idx_id_orderseq,在意料之中,因為查詢字段為id,order_seq,可以利用覆蓋索引。

查詢二:

MySQL > explain select * from test2 where id>10000 and id<20000;
+----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+
| id | select_type | table | partitions | type  | possible_keys                  | key     | key_len | ref  | rows  | filtered | Extra       |
+----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+
|  1 | SIMPLE      | test2 | NULL       | range | PRIMARY,idx_id,idx_id_orderseq | PRIMARY | 8       | NULL | 19122 |   100.00 | Using where |
+----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+

優化器選擇了id字段的聚集索引。因為是select *,所以優化器沒有選擇索引idx_id_orderseq(id,order_seq),id字段的聚集索引(主鍵)和輔助索引idx_id,優化器是怎么選擇的呢?

如果選擇輔助索引idx_id,查詢到具體id之后,還要回表查到整行的數據信息,雖然id字段是有序的,但是回表查詢的數據是無序的,因此變成了磁盤上的離散操作,離散讀取比順序讀取性能消耗高的多,所以會選擇聚集索引。

“為什么mysql優化器選擇了聚集索引”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金昌市| 乌鲁木齐县| 喀什市| 神农架林区| 鸡东县| 塔河县| 恩施市| 南城县| 汝南县| 五大连池市| 哈尔滨市| 克什克腾旗| 富锦市| 历史| 石门县| 黄浦区| 宁强县| 永修县| 岚皋县| 望奎县| 平顶山市| 丰原市| 青田县| 阳朔县| 大邑县| 同心县| 保德县| 宝应县| 铁力市| 义马市| 诸城市| 乐陵市| 陇西县| 英吉沙县| 青龙| 安国市| 林甸县| 贵定县| 阳山县| 淮安市| 延川县|