日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

了解mysql文章_一篇文章带你深入了解MySQL 索引相关

發布時間:2025/3/20 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解mysql文章_一篇文章带你深入了解MySQL 索引相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基礎知識

一張數據表中具有百萬級的數據時,如何精確且快速的拿出其中某一條或多條記錄成為了人們思考的問題。

InnoDB 存儲引擎的出現讓這個問題得到了很好的解決, InnoDB 存儲引擎是以索引來進行數據的組織,而索引在 MySQL 中也被稱之為鍵,因此 UNIQUE KEY , PRIMARY KEY 約束字段會作為索引字段。

當沒有明確指出 PRIMAY KEY 時, InnoDB 存儲引擎會自動的創建一個6字節的隱藏主鍵用于組織數據,但是由于該主鍵是隱藏的所以對查詢沒有任何幫助。

索引相當于一本大字典的目錄,有了目錄來找想要的內容就快很多,否則就只能進行一頁一頁的遍歷查詢

查找過程

索引的查找過程是依照 B+ 樹算法進行查找的,而每一張數據表都會有一個且只能有一個與之對應的樹

只有最下面一層節點中存儲一整行記錄

第二層及第一層中黃色部分為指針

如圖所示,如果要查找數據項29,那么首先會把磁盤塊1由磁盤加載到內存,此時發生一次IO,在內存中用二分查找確定29在17和35之間,鎖定磁盤塊1的P2指針,內存時間因為非常短(相比磁盤的IO)可以忽略不計,通過磁盤塊1的P2指針的磁盤地址把磁盤塊3由磁盤加載到內存,發生第二次IO,29在26和30之間,鎖定磁盤塊3的P2指針,通過指針加載磁盤塊8到內存,發生第三次IO,同時內存中做二分查找找到29,結束查詢,總計三次IO。真實的情況是,3層的 B+ 樹可以表示上百萬的數據,如果上百萬的數據查找只需要三次IO,性能提高將是巨大的,如果沒有索引,每個數據項都要發生一次IO,那么總共需要百萬次的IO,顯然成本非常非常高。

索引分類

索引分為聚集索引與輔助索引

聚集索引

聚集索引是會直接按照 B+ 樹進行查詢,由于 B+ 樹的底層葉子節點是一整行記錄,所以聚集索引能夠十分快速的拿到一整行記錄。

值得注意的是,一張數據表中只能有一個聚集索引。

輔助索引

輔助索引的樹最底層的葉子節點并不會存儲一整行記錄,而是只存儲單列索引的數據,并且還存儲了聚集索引的信息。

通過輔助索引進行查詢時,先拿到自身索引字段的數據,再通過聚集索引拿到整行記錄,也就是說輔助索引拿一整行記錄而言需要最少兩次查詢。

而一張數據表中可以有多個輔助索引。

創建索引

索引類型

索引名類型INDEX(field)普通索引,只加速查找,無約束條件PRIMARY KEY(field)主鍵索引,加速查找,非空且唯一約束UNIQUE(field)唯一索引,加速查找,唯一約束INDEX(field1,field2)聯合普通索引PRIMARY KEY(field1,field2)聯合主鍵索引UNIQUE(field1,field2)聯合唯一索引FULLTEXT(field)全文索引SPATIAL(field)空間索引

舉個例子來說,比如你在為某商場做一個會員卡的系統。這個系統有一個會員表有下列字段:會員編號INT會員姓名VARCHAR(10)會員身份證號碼VARCHAR(18)會員電話VARCHAR(10)會員住址VARCHAR(50)會員備注信息TEXT那么這個 會員編號,作為主鍵,使用PRIMARY會員姓名 如果要建索引的話,那么就是普通的INDEX會員身份證號碼 如果要建索引的話,那么可以選擇UNIQUE(唯一的,不允許重復)# 除此之外還有全文索引,即FULLTEXT會員備注信息如果需要建索引的話,可以選擇全文搜索。用于搜索很長一篇文章的時候,效果最好。用在比較短的文本,如果就一兩行字的,普通的INDEX也可以。但其實對于全文搜索,我們并不會使用MySQL自帶的該索引,而是會選擇第三方軟件如Sphinx,專門來做全文搜索。# 其他的如空間索引SPATIAL,了解即可,幾乎不用各個索引的應用場景索引定義

語法介紹

索引應當再建立表時就進行創建,如果表中已有大量數據,再進行創建索引會花費大量的時間。

-- 方法一:創建表時CREATETABLE表名 (? ? ? ? ? ? ? ? 字段名1數據類型 [完整性約束條件…],? ? ? ? ? ? ? ? 字段名2數據類型 [完整性約束條件…],? ? ? ? ? ? ? ? [UNIQUE| FULLTEXT | SPATIAL ]INDEX|KEY[索引名]? (字段名[(長度)]? [ASC|DESC])? ? ? ? ? ? ? ? );-- 方法二:CREATE在已存在的表上創建索引CREATE[UNIQUE| FULLTEXT | SPATIAL ]INDEX索引名ON表名 (字段名[(長度)]? [ASC|DESC]) ;-- 方法三:ALTER TABLE在已存在的表上創建索引ALTERTABLE表名ADD[UNIQUE| FULLTEXT | SPATIAL ]INDEX索引名 (字段名[(長度)]? [ASC|DESC]) ;-- 刪除索引:DROP INDEX 索引名 ON 表名字;

功能測試

--? 準備表,注意此時表沒有設置任何類型的索引createtables1(? ? ? ? id int,? ? ? ? number varchar(20));-- 創建存儲過程,實現批量插入記錄delimiter $$-- 聲明存儲過程的結束符號為$$createprocedure auto_insert1()? ? ? ? BEGIN? ? ? ? ? ? ? ? declare i int default1;-- 聲明定義變量while(i <1000000)doinsertinto s1 values? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (i,concat('第', i,'條記錄'));? ? ? ? ? ? ? ? set i = i +1;endwhile;? ? ? ? END $$-- 存儲過程創建完畢delimiter ;-- 調用存儲過程,自動插入一百萬條數據call auto_insert1();

在無索引的情況下,查找 id 為 567891 的這條記錄,耗時 0.03s

mysql>select* from s1 where id =567891;+--------+--------------------+| id? ? | number? ? ? ? ? ? |+--------+--------------------+|567891| 第567891條記錄? ? |+--------+--------------------+1rowinset (0.33sec)

接下來為 id 字段建立主鍵索引后再進行查找,耗時為 0.00s

mysql> ALTER TABLE s1 MODIFY idintPRIMARY KEY;Query OK,0rowsaffected(4.76sec)? -- 創建索引花費寺廟Records: 0? Duplicates: 0? Warnings: 0mysql>select*froms1whereid=567891;+--------+--------------------+| id? ? | number? ? ? ? ? ? |+--------+--------------------+|567891| 第567891條記錄? ? |+--------+--------------------+1rowinset(0.00sec) 再次查找則快了很多

總結

以上是生活随笔為你收集整理的了解mysql文章_一篇文章带你深入了解MySQL 索引相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美色图亚洲天堂 | 国产人久久人人人人爽 | 91aaaa| 91好色先生tv | xxx视频在线观看 | 日韩视频一区二区三区 | 在线观看日韩精品 | 中文精品久久 | 国产女人高潮毛片 | 黑人巨大精品 | 老色批影院 | 在线观看aaa | 亚洲天堂小视频 | 精品一区二区三区四区五区六区 | 91亚洲国产成人精品性色 | 91精品在线播放 | 精品日韩视频 | ,午夜性刺激免费看视频 | 51嘿嘿嘿国产精品伦理 | 中文字幕av免费观看 | 性日本xxx | 北岛玲av在线 | 三级爱爱 | 四虎精品在线播放 | 久久精品99久久久 | 亚洲欧美网站 | 免费在线观看污 | 亚洲在线观看av | 国产精品亚洲αv天堂无码 伊人性视频 | 日韩亚洲国产欧美 | 成人免费播放 | 免费激情小视频 | 男女视频在线免费观看 | 少妇全黄性生交片 | 婷婷深爱激情 | 国产91久久精品一区二区 | 国产精品入口麻豆 | 男人扒女人添高潮视频 | 午夜视频久久久 | 日韩三级av在线 | 少妇太紧太爽又黄又硬又爽 | 欧美大片在线免费观看 | 欧美成年人 | 91 在线视频 | 精品无码久久久久久久久果冻 | 在线欧美国产 | 成人欧美一区二区三区黑人免费 | 禁断介护老人中文字幕 | 夜夜春夜夜爽 | 天天干在线播放 | 少妇又紧又色又爽又刺激视频 | 波多野结衣电影在线播放 | 中文字幕亚洲一区二区三区 | 亚洲九九爱 | 男女考妣视频 | 物业福利视频 | a毛片在线 | 国产精品77777 | 337p粉嫩大胆噜噜噜噜69影视 | 综合久久五月天 | 久久9999久久免费精品国产 | 国产高h视频 | av成人在线观看 | 毛片的网址 | 日本少妇xxxxxx | 亚洲国产精品久久久 | av5566| 亚洲区一区二区三区 | 日本大尺度电影免费观看全集中文版 | 亚洲精品一区二区三区四区 | 日本两性视频 | 美女av网站| 日韩三级中文 | 激情久久中文字幕 | 在线美女av | 久久蜜臀精品av | 久久嗨 | 精品小视频在线观看 | 亚洲欧洲免费 | 亚洲午夜天堂 | 在线观看视频一区 | 毛片2 | 花样视频污 | av这里只有精品 | 韩国成人免费视频 | 天天操天天玩 | 91.久久| 国产欧美一区二区精品性色99 | 国产精品一区二区无码免费看片 | 91久久色| 中文av网站 | 在线看黄色av | re久久| 成年人黄色 | 欧美人与动性xxxxx杂性 | 亚色视频在线 | 男人午夜网站 | 久久机热这里只有精品 | 色吧婷婷 |