中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

什么是MySQL索引-創新互聯

這篇文章給大家介紹什么是MySQL索引,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創新互聯是一家專業從事成都做網站、網站制作、成都外貿網站建設、網頁設計的品牌網絡公司。如今是成都地區具影響力的網站設計公司,作為專業的成都網站建設公司,創新互聯依托強大的技術實力、以及多年的網站運營經驗,為您提供專業的成都網站建設、營銷型網站建設及網站設計開發服務!

前言:

索引是MySQL數據庫中的重要對象之一,索引的目的在于提高查詢效率??梢灶惐茸值渲械哪夸?,查找字典內容時可以根據目錄查找到數據的存放位置,然后直接獲取即可。索引是表的目錄,在查找內容之前可以先在目錄中查找索引位置,以此快速定位查詢數據。需要說明的是,MySQL支持諸多存儲引擎,而各種存儲引擎對索引的支持也各不相同。為了避免混亂,本文將只關注于InnoDB引擎下的B+Tree索引。

1.索引結構及原理

要想了解索引的原理,首先要知道索引的結構,下面簡單介紹下B+Tree索引的結構。

首先我們要知道索引是一種數據結構。在InnoDB中,每個索引其實都是一顆B+樹,B+樹是為了磁盤及其他存儲輔助設備而設計的一種平衡查找樹(不是二叉樹),在B+樹中,所有的數據都在葉子節點,且每一個葉子節點都帶有指向下一個節點的指針,形成了一個有序的鏈表。一般情況下數據庫的B+樹的高度一般在2~4層,這就是說找到某一鍵值的行記錄最多需要2到4次邏輯IO,下圖簡單展示了B+樹索引的結構。

2.索引的分類及創建方法

在InnoDB中,表都是根據主鍵順序以索引的形式存放的,這種存儲方式的表稱為索引組織表。根據葉子節點的內容,索引類型分為主鍵索引和非主鍵索引。主鍵索引的葉子節點存的是整行數據。在InnoDB里,主鍵索引也被稱為聚簇索引(clustered index)。非主鍵索引的葉子節點內容是索引列和主鍵的值。在InnoDB里,非主鍵索引也被稱為二級索引(secondary index)或輔助索引

一張InnoDB表必須有一個聚簇索引,當有主鍵時,會以主鍵作為聚簇索引;如果沒有顯式定義主鍵,InnoDB會選擇一個唯一的非空索引代替。如果沒有這樣的索引,則MySQL自動為InnoDB表生成一個隱含字段作為主鍵。除聚簇索引外的其他索引都可稱為二級索引,比如我們常用到的唯一索引、普通索引、聯合索引等。

上面講過聚簇索引的葉子節點存的是整行數據,當某條查詢使用的是聚簇索引時,只需要掃描聚簇索引一顆B+樹即可得到所需記錄,如果想通過二級索引來查找完整的記錄的話,需要通過回表操作,也就是在通過二級索引找到主鍵值之后再到聚簇索引中查找完整的記錄。也就是說,基于非主鍵索引的查詢需要多掃描一棵索引樹。因此,我們在應用中應該盡量使用主鍵查詢。

下面介紹下索引的創建、刪除等操作方法。

# 建表時指定索引
CREATE TABLE `t_index` (
  `increment_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  `col1` int(11) NOT NULL,
  `col2` varchar(20) NOT NULL,
  `col3` varchar(50) NOT NULL,
  `col4` int(11) NOT NULL,
  PRIMARY KEY (`increment_id`),
  UNIQUE KEY `uk_col1` (`col1`),
    KEY `idx_col2` (`col2`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='測試索引';
# 創建索引(兩種方法)
# 普通索引
alter table `t_index` add index idx_col3 (col3);
create index idx_col3 on t_index(col3);
# 唯一索引
alter table `t_index` add unique index uk_col4 (col4);
create unique index uk_col4 on t_index(col4);
# 聯合索引
alter table `t_index` add index idx_col3_col4 (col3,col4);
create index idx_col3_col4 on t_index(col3,col4);
# 刪除索引
alter table `t_index` drop index uk_col4;
DROP INDEX idx_col3_col4 on t_index;
3.索引的優缺點及使用建議

索引的優點顯而易見是可以加速查詢,但創建索引也是有代價的。首先每建立一個索引都要為它建立一棵B+樹,會占用額外的存儲空間;其次當對表中的數據進行增加、刪除、修改時,索引也需要動態的維護,降低了數據的維護速度。所以,索引的創建及使用時有原則的,下面給出幾點索引使用的建議:

  • 顯式創建主鍵索引,建議使用自增ID作為主鍵。

  • 只為用于搜索、排序、分組、連接的列創建索引。

  • 對經常更新的表避免創建過多的索引。

  • 建立聯合索引時,可選擇性高的列放在前面。

  • 盡量不要在可選擇性差的列上建索引,如:性別、狀態列等。

  • 盡量使用覆蓋索引進行查詢,避免回表帶來的性能損耗。(覆蓋索引包含要查詢的所有列)

  • select后面只寫查詢需要用到的字段,去掉不需要的字段。

  • 定位并刪除表中的重復和冗余索引。

關于什么是MySQL索引就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文標題:什么是MySQL索引-創新互聯
標題鏈接:http://www.2m8n56k.cn/article12/dghidc.html

成都網站建設公司_創新互聯,為您提供域名注冊、網站導航網站制作、網站建設、手機網站建設網頁設計公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
主站蜘蛛池模板: 亚洲精品久久久久中文字幕一区 | 国产a级一级久久毛片 | 欧美精品人爱a欧美精品 | 久久综合婷婷香五月 | 99久久精品国产亚洲 | 久久黄色片| 最近韩国日本免费免费版 | 欧美视频第一页 | 高清精品女厕在线观看 | 久草视频官网 | 在线观看一级片 | 精品一区二区三区在线成人 | 国产91九色刺激露脸对白 | 欧美性性性性性色大片免费的 | 亚洲日本欧美综合在线一 | 久久一区二区三区不卡 | 手机福利在线 | 日本色网址 | 无限观看社区在线视频 | 欧美成人看片一区二区三区尤物 | 欧美视频在线观看网站 | 久久99精品视频在线在线观看 | 大量愉拍情侣在线视频 | 久久精品免费i 国产 | 韩国美女一区二区 | 亚洲综合区 | 欧美亚洲国产精品久久久久 | 欧美日韩在线观看精品 | 亚洲香蕉一区二区三区在线观看 | 黄色一级a毛片 | 欧美aaaaaabbbbb | 亚洲一区在线观看视频 | 91久久福利国产成人精品 | 成人精品在线 | 日韩欧美一区二区不卡看片 | 日韩高清在线二区 | 亚洲一区二区精品推荐 | 欧美日韩精品一区二区三区视频在线 | 亚洲欧美影院 | 国产午夜精品理论片在线 | 韩国本免费一级毛片免费 |