Ⅰ 怎麼查看錶的索引mysql
查看索引的語法格式如下:
SHOW INDEX FROM <表名> [ FROM <資料庫名>]
語法說明如下:
<表名>:指定需要查看索引的數據表名。
<資料庫名>:指定需要查看索引的數據表所在的資料庫,可省略。比如,SHOW INDEX FROM student FROM test; 語句表示查看 test 資料庫中 student 數據表的索引。
示例
使用 SHOW INDEX 語句查看《MySQL創建索引》一節中 tb_stu_info2 數據表的索引信息,SQL 語句和運行結果如下所示。
mysql> SHOW INDEX FROM tb_stu_info2\G
1. row
Table: tb_stu_info2
Non_unique: 0
Key_name: height
Seq_in_index: 1
Column_name: height
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.03 sec)
其中各主要參數說明如下:
參數 說明
Table 表示創建索引的數據表名,這里是 tb_stu_info2 數據表。
Non_unique 表示該索引是否是唯一索引。若不是唯一索引,則該列的值為 1;若是唯一索引,則該列的值為 0。
Key_name 表示索引的名稱。
Seq_in_index 表示該列在索引中的位置,如果索引是單列的,則該列的值為 1;如果索引是組合索引,則該列的值為每列在索引定義中的順序。
Column_name 表示定義索引的列欄位。
Collation 表示列以何種順序存儲在索引中。在 MySQL 中,升序顯示值「A」(升序),若顯示為 NULL,則表示無分類。
Cardinality 索引中唯一值數目的估計值。基數根據被存儲為整數的統計數據計數,所以即使對於小型表,該值也沒有必要是精確的。基數越大,當進行聯合時,MySQL 使用該索引的機會就越大。
Sub_part 表示列中被編入索引的字元的數量。若列只是部分被編入索引,則該列的值為被編入索引的字元的數目;若整列被編入索引,則該列的值為 NULL。
Packed 指示關鍵字如何被壓縮。若沒有被壓縮,值為 NULL。
Null 用於顯示索引列中是否包含 NULL。若列含有 NULL,該列的值為 YES。若沒有,則該列的值為 NO。
Index_type 顯示索引使用的類型和方法(BTREE、FULLTEXT、HASH、RTREE)。
Comment 顯示評注。
Ⅱ 資料庫基礎:講解MySQL索引的概念及資料庫索引的應用[1]
資料庫引入了索引
用戶對資料庫最頻繁的操作是進行數據查詢 一般情況下 資料庫在進行查詢操作時需要對整個表進行數據搜索 當表中的數據很多時 搜索數據就需要很長的時間 這就造成了伺服器的資源浪費 為了提高檢索數據的能力 資料庫引入了索引機制
有關 索引 的比喻
從某種程度上 可以把資料庫看作一本書 把索引看作書的目錄 通過目錄查找書中的信息 顯然較沒有目錄的書方便 快捷
資料庫索引實際是什麼告滲?(兩部分組成)
索引是一個單獨的 物理的資料庫結構 它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單
索引在表中的角色
一個表的存儲是由兩部分組成的 一部分用來存放表的數據頁面 另一部分存放索引頁面 索引就存放在索引頁面上
索引高效原理
通常 索引頁面相對於數據頁面來說小得多 當進行數據檢索時 系統先搜索索引頁面 從中找到所需數據的指針 再直接通過指針從數據頁面中讀取數據
索引的分類
在SQL Server 的資料庫中按存儲結構的不同將索引分為兩類 簇索引(Clustered Index)和非簇索引(Nonclustered Index)
( )簇索引對表的物理數據頁中的數據按列進行排序 然後再重新存儲到磁碟上 即簇索引與數據是混為一體 的它的葉節點中存儲的是實際的數據 由於簇索引對表中的數據一一進行了排序 因此用簇索引查找數據很快 但由於簇索引將表的所有數據完全重新排列了 它所需要的空間也就特別大 大概相當於表中數據所佔空間的 % 表的數據行只能以一種排序方式存儲在磁碟上 所以一個表只能有一個簇索引
( )非簇索引具有與表的數據完全分離的結構 使用非簇索引不用將物理數據頁中的數據按列襪友鍵排序 非簇索引的葉節點中存儲了組成非簇索引的關鍵字的值和行定位器 行定位器的結構和存儲內容取決於數據的存儲方式 如果數據是以簇索引方式存儲的 則行定位器中存儲的是簇索引的索引鍵;如果數據不是以簇索引方式存儲的 這種方式又稱為堆存儲方式(Heap Structure) 則行定位器存儲的是指向數據行的指針 非簇索引將行定位器按關鍵字的值用一定的方式排序 這個順序與表的行在數據頁中的排序是不匹配的 由於非簇索引使用索引頁存儲因此它比簇索引需要更多的存儲空間且檢索效率較低但一個表只能建一個簇索引 當用戶需要建立多個索引時就需要使用非簇索引了
小結 Clustered Index 是與物理數據混在一起並對物理數據進重排 就像使用拼音查字典;Unclustered Index 是與物理數據完全分離的 利用額外空間對關鍵字進行重排 就像使用部首查字典
資料庫索引應用
一 索引的概念
索引就是加快檢索表中數據的方法 資料庫的索引類似於書籍的索引 在書籍中 索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息 在資料庫中 索引也允許資料庫程序迅速地找到表中的數據 而不必掃描整個資料庫
二 索引的特點
索引可以加快資料庫的檢索速度
索引降低了資料庫插入 修改 刪除等維護任務的速度
索引創建在表上 不能創建在視圖上
索引既可以直接創建 也可以間接創建
可以在優化隱藏中 使用索引
使用查詢處理器執行SQL語句 在一個表上 一次只能使用一個索引
其他
三 索引的優點
創建唯一性索引 保證資料庫表中每一行數據的唯一性
大大加快數據的檢索速度 這也是創建索引的最主要的原因
加速表和表之間的連接 特別是在實現數據的參考完整性方面特別有意義
在使用分組和排序子句進行數據檢索時 同樣可以顯著減少查詢中分組和排序的時間
通過使用索引 可以在查詢告巧的過程中使用優化隱藏器 提高系統的性能
四 索引的缺點
創建索引和維護索引要耗費時間 這種時間隨著數據量的增加而增加
索引需要佔物理空間 除了數據表占數據空間之外 每一個索引還要佔一定的物理空間 如果要建立聚簇索引 那麼需要的空間就會更大
當對表中的數據進行增加 刪除和修改的時候 索引也要動態的維護 降低了數據的維護速度
lishixin/Article/program/MySQL/201311/29604