国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会宁县| 沈丘县| 平乐县| 都安| 东港市| 东城区| 垣曲县| 调兵山市| 师宗县| 偏关县| 辽宁省| 泌阳县| 南安市| 巴楚县| 柏乡县| 玛纳斯县| 古浪县| 龙井市| 弥勒县| 宜阳县| 六安市| 长乐市| 丰顺县| 蒙城县| 仙居县| 长宁县| 左贡县| 彩票| 太谷县| 休宁县| 夹江县| 黎平县| 盐亭县| 武鸣县| 上饶县| 米泉市| 南通市| 济源市| 淳化县| 西安市| 南皮县|