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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

撩课mysql_撩课-Mysql第20部分索引

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 撩课mysql_撩课-Mysql第20部分索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是索引

索引用于快速找出

在某個列中有一特定值的行,

不使用索引,

MySQL必須從第一條記錄開始

讀完整個表,

直到找出相關的行,

表越大,

查詢數據所花費的時間就越多,

如果表中查詢的列有一個索引,

MySQL能夠快速到達一個位置

去搜索數據文件,

而不必查看所有數據,

那么將會節省很大一部分時間

索引的優勢與劣勢

優勢

類似大學圖書館建書目索引,

提高數據檢索效率,

降低數據庫的IO成本。

通過索引對數據進行排序,

降低數據排序的成本,降低了CPU的消耗。

劣勢

實際上索引也是一張表,

該表保存了主鍵與索引字段,

并指向實體表的記錄,

所以索引列也是要占空間的。

雖然索引大大提高了查詢速度,

同時確會降低更新表的速度,

如對表進行INSERT、UPDATE、DELETE。

索引的分類

單值索引

即一個索引只包含單個列,

一個表可以有多個單列索引。

唯一索引

索引列的值必須唯一,

但允許有空值。

復合索引

一個索引包含多個列。

INDEX MultiIdx(id,name,age)

全文索引

只有在MyISAM引擎上才能使用,

只能在CHAR,VARCHAR,

TEXT類型字段上使用全文索引

索引操作

創建索引

CREATE INDEX 索引名稱 ON table (column[, column]...);

create INDEX salary_index ON emp(salary)

刪除索引

DROP INDEX 索引名稱 ON 表名

查看索引

show index from 表名;

Table

表名

Non_unique

如果索引不能包括重復詞,則為0。如果可以,則為1。

Key_name

索引的名稱

Seq_in_index

索引中的列序列號,從1開始。

Column_name

列名稱。

Collation

列以什么方式存儲在索引中。

在MySQL中,有值‘A'(升序)或NULL(無分類)。

Cardinality

索引中唯一值的數目的估計值。

過運行ANALYZE TABLE或myisamchk -a可以更新。

基數根據被存儲為整數的統計數據來計數,

所以即使對于小型表,

該值也沒有必要是精確的。

基數越大,當進行聯合時,

MySQL使用該索引的機會就越大。

Sub_part

如果列只是被部分地編入索引,則為被編入索引的字符的數目。如果整列被編入索引,則為NULL。

Packed

指示關鍵字如何被壓縮。

如果沒有被壓縮,則為NULL。

Null

如果列含有NULL,則含有YES。如果沒有,則該列含有NO。

Index_type

用過的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

Comment

索引備注信息

自動創建索引

在表上定義了主鍵時,

會自動創建一個對應的唯一索引

在表上定義了一個外鍵時,

會自動創建一個普通索引

**EXPLAIN **

用來查看索引是否正在被使用,并且輸出其使用的索引的信息。

id:

SELECT識別符。

這是SELECT的查詢序列號,也就是一條語句中,

該select是第幾次出現。

在次語句中,

select就只有一個,所以是1.

select_type:

所使用的SELECT查詢類型,

SIMPLE表示為簡單的SELECT,

不實用UNION或子查詢,

就為簡單的SELECT。

table:

數據表的名字。

他們按被讀取的先后順序排列

type:

指定本數據表和其他數據表之間的關聯關系,

該表中所有符合檢索值的記錄都會被取出來和

從上一個表中取出來的記錄作聯合。

key:

實際選用的索引

possible_keys:

MySQL在搜索數據記錄時可以選用的各個索引,

該表中就只有一個索引,year_publication

key_len:

顯示了mysql使用索引的長度(也就是使用的索引個數),

當 key 字段的值為 null時,索引的長度就是 null。

注意,key_len的值可以告訴你

在聯合索引中mysql會真正

使用了哪些索引。

這里就使用了1個索引,所以為1,

ref:

給出關聯關系中另一個數據表中數據列的名字。

常量(const),這里使用的是1990,就是常量。

rows:

MySQL在執行這個查詢時

預計會從這個數據表里讀出的數據行的個數。

extra:

提供了與關聯操作有關的信息,

沒有則什么都不寫。

索引結構

先會對數據進行排序

btree索引

B+樹索引

B+樹是一個平衡的多叉樹,

從根節點到每個葉子節點的高度差值不超過1

而且同層級的節點間有指針相互鏈接。

hash索引

哈希索引就是采用一定的哈希算法,

把鍵值換算成新的哈希值,

檢索時不需要類似B+樹那樣從根節點到葉子節點逐級查找,

只需一次哈希算法即可立刻定位到相應的位置,速度非???。

hash 索引結構的特殊性,

其檢索效率非常高,

索引的檢索可以一次定位,

不像B-Tree 索引需要從根節點到枝節點,

最后才能訪問到頁節點這樣多次的IO訪問,

所以 Hash 索引的查詢效率要遠高于 B-Tree 索引。

哪些情況需要創建索引

主鍵自動建立唯一索引

頻繁作為查詢條件的字段應該創建索引

查詢中與其他表關聯的字段,

外鍵關系建立索引

頻繁更新的字段不適合建立索引,

因為每次更新不單單是

更新了記錄還會更新索引

WHERE條件里用不到的字段不創建索引

查詢中排序的字段,

排序的字段若通過索引

去訪問將大大提高排序速度

查詢中統計或者分組字段

哪些情況不需要創建索引

表記錄太少

經常增刪改的表

如果某個數據列包含許多重復的內容

為它建立索引就沒有太大的實際效果

如果你想要獲取Xmind思維導圖源件加群:869866610,進群可以獲取以上技術的學習視頻。

總結

以上是生活随笔為你收集整理的撩课mysql_撩课-Mysql第20部分索引的全部內容,希望文章能夠幫你解決所遇到的問題。

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