資料庫 索引的建立

2021-07-12 07:48:42 字數 2006 閱讀 7620

由於沒有學過資料庫這門課,所以使用的時候很多概念都不知道,前段時間學長讓我學習一下索引相關的知識,因為面試的時候會經常問道,而且當時專案也確實用到了這個問題,在此簡單記錄一下,以後再慢慢學習慢慢整理。

我理解的資料庫索引就是用空間換取時間,如果沒有索引,查詢資料庫中某個欄位的時候就會進行順序查詢直到找到符合條件的資料,如果資料量非常龐大的話,這個開銷肯定是非常恐怖的,所以在某個經常進行查詢排序等操作的字段上建立索引,一般都是b樹或者雜湊索引,這樣會額外建立乙個資料結構以使得改字段呈某種規律被持有,在查詢的時候就能快速被找到,但是這個額外的資料結構肯定也需要維護。以上完全是個人理解,不一定保證正確。

一、基本操作

1、檢視索引

mysql> show index from tblname;
其中的tbname為表的名稱,比如我的資料庫中news_table是乙個用於儲存新聞的表,其中的新聞位址會經常被查詢,所以在該字段建立了索引,使用上述命令就可以看見在news_table中有幾個索引,還可以看出索引的型別,下面顯示的是btree。

表的名稱。

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

2、建立索引

create index index_name on table(column(length))
由於接觸的不是很深入,我直接建立了索引,

沒有指定length。

·  index_name表示索引的名稱,就是上面說到的key_name。

· table表示列所在的表,對應上面的table。

· column表示列名稱,對應上面的column_name。

剛開始的時候每次建立索引都會導致資料庫直接崩潰,可能是因為主機沒有配置環境變數,後來在主機配置環境變數後,就建立成功了。

3、刪除索引

drop index index_name on table
·  index_name表示索引的名稱,就是上面說到的key_name。

·  table表示列所在的表,對應上面的table。

資料庫建立索引

建立索引 學生學號建立聚集索引 create unique clustered index ix student id on student studentid 規則 create unique clustered nonclustered index 索引名 on 表名 檢視名 索引列名,asc ...

資料庫建立索引

建立索引 目的 加快查詢速度 create unique cluster index 索引名 on 表名 列名 次序 列名 次序 unique標識唯一索引,cluster表示聚簇索引 索引可以建立在該錶的一列或多列上,各列名之間用逗號隔開,次序表示索引值的排列次序,asc表示公升序 預設 desc表...

資料庫建立索引

建立索引可以大大提高系統的效能 優點 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性 可以大大加快資料的檢索速度,這也是建立索引的最主要的原因 可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間 ...