本篇內(nèi)容介紹了“為什么mysql優(yōu)化器選擇了聚集索引”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司專業(yè)提供成都服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。通過這個(gè)以下這個(gè)案例,來說明優(yōu)化器在選擇索引時(shí)候的取舍。
查看表結(jié)構(gòu):
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)
優(yōu)化器選擇idx_id_orderseq,在意料之中,因?yàn)椴樵冏侄螢閕d,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 | +----+-------------+-------+------------+-------+--------------------------------+---------+---------+------+-------+----------+-------------+
優(yōu)化器選擇了id字段的聚集索引。因?yàn)槭莝elect *,所以優(yōu)化器沒有選擇索引idx_id_orderseq(id,order_seq),id字段的聚集索引(主鍵)和輔助索引idx_id,優(yōu)化器是怎么選擇的呢?
如果選擇輔助索引idx_id,查詢到具體id之后,還要回表查到整行的數(shù)據(jù)信息,雖然id字段是有序的,但是回表查詢的數(shù)據(jù)是無序的,因此變成了磁盤上的離散操作,離散讀取比順序讀取性能消耗高的多,所以會(huì)選擇聚集索引。
“為什么mysql優(yōu)化器選擇了聚集索引”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)站欄目:為什么mysql優(yōu)化器選擇了聚集索引-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://m.rwnh.cn/article10/gepdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、做網(wǎng)站、響應(yīng)式網(wǎng)站、網(wǎng)站策劃、網(wǎng)站收錄、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容