MySQL檢視 建立和刪除索引的方法

2021-08-20 07:23:24 字數 2589 閱讀 1365

1.設定索引的原則

(1).最適合索引的列是出現在 where子句中的列,或連線子句中指定的列,而不是出現在 select 關鍵字後的選擇列表中的列。

(2).使用惟一索引。考慮某列中值的分布。索引的列的基數越大,索引的效果越好。例如,存放出生日期的列具有不同值,很容易區分各行。而用來記錄性別的列,只含有「 m」和「f」,則對此列進行索引沒有多大用處,因為不管搜尋哪個值,都會得出大約一半的行。

(3).使用短索引。如果對字串列進行索引,應該指定乙個字首長度,只要有可能就應該這樣做。例如,如果有乙個 char(200)列,如果在前 10 個或 20 個字元內,多數值是惟一的, 那麼就不要對整個列進行索引。 對前10個或20個字元進行索引能夠節省大量索引空間,也可能會使查詢更快。較小的索引涉及的磁碟 io 較少,較短的值比較起來更快。更為重要的是,對於較短的鍵值,索引快取記憶體中的塊能容納更多的鍵值,因此,mysql 也可以在記憶體中容納更多的值。這樣就增加了找到行而不用讀取索引中較多塊的可能性。

(4).索引也不是越多越好,增加索引會減慢寫的操作,每個額外的索引都要占用額外的磁碟空間

(5).索引型別

大多數情況下都(預設)採用b樹(btree)來構建索引。

2.建立索引

第一種方式:

alter

table

table_name

addindex

index_name (column_list) 普通索引

alter

table

table_name

addunique

(column_list) 唯一索引

alter

table

table_name

addprimary

key(column_list) 主鍵索引

其中table_name是要增加索引的表名,column_list指出對哪些列進行索引,多列時各列之間用逗號分隔。索引名index_name可選,預設時,mysql將根據第乙個索引列賦乙個名稱。

第二種方式:

create

index

index_name

ontable_name (column_list)

create

unique

index

index_name

ontable_name (column_list)

table_name、index_name和column_list具有與alter table語句中相同的含義,索引名不可選。另外,不能用create index語句建立primary key索引。

3.刪除索引

drop

index

index_name

ontalbe_name

alter

table

table_name

drop

index

index_name

alter

table

table_name

drop

primary

key

其中,前兩條語句是等價的,刪除掉table_name中的索引index_name。

第3條語句只在刪除primary key索引時使用,因為乙個表只可能有乙個primary key索引,因此不需要指定索引名。如果沒有建立primary key索引,但表具有乙個或多個unique索引,則mysql將刪除第乙個unique索引。

如果從表中刪除了某列,則索引會受到影響。對於多列組合的索引,如果刪除其中的某列,則該列也會從索引中刪除。如果刪除組成索引的所有列,則整個索引將被刪除。

4.檢視索引show index from tblname;

show keys from tblname;

列名解釋

· 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)。

MySQL索引的檢視建立和刪除

1 索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1...

MySQL索引的檢視建立和刪除

1 索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1...

MySQL索引的檢視建立和刪除

1 索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1...