国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Innodb表select查詢順序

2024-07-24 13:11:47
字體:
來源:轉載
供稿:網友

今天知數堂一個學生反饋說在優化課中老師講Innodb是以主鍵排序存儲,讀取的時間以主鍵為順序讀取,但發現個例外,如下:

CREATE TABLE zst_t1 ( uid int(10) NOT NULL AUTO_INCREMENT, id int(11) NOT NULL, PRIMARY KEY ( uid ), KEY idx_id ( id ) ) ENGINE=InnoDB;'

寫入數據:

INSERT INTO zst_t1 VALUES (1,1),(12,1),(22,1),(23,1),(33,1),(2,2),(3,2),(10,2),(11,2),(4,4),(13,4),(14,4); 

執行查詢:

select * from zst_t1;

Innodb表,select查詢順序

為什么這個順序是亂的,不按順序排列呢?難道Innodb表并不是全按主鍵存儲?

使用innodb_ruby這個工具查看一下存儲結構什么樣

Innodb表,select查詢順序

看樣子存儲還是按主鍵排序存儲的。沒毛病。

再來看一下該表的索引:

Innodb表,select查詢順序

看到這里應該明白了怎么會事了吧,原來這個查詢是走的索引覆蓋,沒有在進行回表讀取原數據。另外,也在此說明,Innodb二索索引包含了主鍵存儲。

來繼續證明一下:

Innodb表,select查詢順序

看到using index 吧,表示這個查詢利用索引查詢出來結果,不用讀取原表。

那么我們給造一個通過主鍵讀取數據操作:

select * from zst_t1 use index(primary);

Innodb表,select查詢順序

select * from zst_t1 use index(primary);  #確認一下。

Innodb表,select查詢順序

總結:

這個其實就是一個索引包含的查詢案例。 如果靜下來思考一下,也許很快就明白了。也不用這樣去查問題。

技術在于折騰,多搞搞就明白了:)。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙泉市| 资兴市| 潞城市| 榆林市| 湛江市| 滨州市| 浠水县| 南汇区| 益阳市| 德格县| 宾川县| 太仓市| 长垣县| 万州区| 万安县| 晋宁县| 门头沟区| 鄯善县| 韶关市| 陆丰市| 伊通| 枣庄市| 葵青区| 信宜市| 曲周县| 济阳县| 修文县| 延川县| 顺昌县| 东山县| 乐陵市| 启东市| 寻甸| 和平县| 城市| 武陟县| 鲁山县| 苍梧县| 瑞丽市| 商河县| 昌黎县|