索引的基本使用與建立選擇

2022-09-02 14:54:09 字數 1881 閱讀 3954

如果我們查詢的表裡面有千萬條資料,這時如果我們獲取其中一條資料的詳細資訊,在沒有建立索引和使用索引他們的查詢時間是不相同的

舉例:

如果當我們的表中有以下字段(id   name   age),並且id作為主鍵,這時如果我們查詢id,會發現查詢資料非常的快(已知表中有幾千條資料)

select id from emp where id=100;

但是如果我們直接查詢年齡會發現,需要查詢很久的時間

select age from emp where age=20;

這個時候我們就要考慮為age建立乙個索引(由於表自身就很大,所以建立索引也要花費一定的時間)

create index age_idx on emp(age);

這樣再次執行第二個語句就會發現執行速度變快許多,並且我們使用檢視索引的語句後會發現    index_type為btree型別

索引的使用方式:

建立索引:

create [unique] index 索引名稱 on 表名(字段(長度))

alter 表名 add [unque] index[索引名稱] on(字段(長度))

檢視索引:

show index from 表名

刪除索引:

drop index[索引名稱] on 表名

更改索引:

alter table tab_name add primary key(column_list)        新增乙個主鍵,索引必須是唯一索引,不能為null

alter table tab_name add unque index_name(column_list)      建立的索引是唯一索引,可以為null

alter table tab_name add index index_name(column_list)       普通索引,索引值可出現多次

alter table tab_name add fulltext index_name(column_list)     全文索引

何時選擇建立索引:

適合建立索引的情況:

1.主鍵自動建立唯一索引

2.頻繁作為查詢條件的字段應該建立索引        比如銀行系統銀行帳號,電信系統的手機號

3.查詢中與其它表關聯的字段,外來鍵關係建立索引      比如員工,部門外來鍵

查詢中排序的字段,排序的字段若通過索引去訪問將大提公升排序速度    索引能夠提高檢索的速度和排序的速度

查詢中統計或分組的字段      分組的前提是必排序

不適合建立索引的情況:

where條件裡用不到的字段不建立索引

記錄比較少的表

需要經常增刪改的表

索引提高了查詢的速度      同時卻會降低更新表的速度,如果對錶的insert,update和delete

因為建立索引後, 更新表時, mysql不僅要儲存資料,還要儲存一下索引檔案

資料重複的表字段

如果某個資料列包含了許多重複的內容,為它建立索引 就沒有太大在的實際效果

比如表中的某乙個欄位為國籍,性別   資料的差異率和重複率不高,這種建立索引就沒有太多意義

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

每次更新不單單更新資料,還要更新索引

如果你需要學習詳細的mysql資料庫優化,可以點選這裡檢視

SQL server索引 簡介,建立與使用

索引 索引分類 常用的6種 唯一索引 當建立唯一約束的時候系統就自動建立唯一索引 主鍵索引 當建立唯主鍵約束的時候系統就自動建立主鍵索引,主鍵索引的效能比唯一索引更快 聚集索引 建立聚集索引選擇可以物理排序的列,比如abc或者123 注意事項 乙個表只能包含乙個聚集索引,當設定某列為主鍵時,則該列缺...

Lucene建立索引和索引的基本檢索

author 百知教育 gaozhy 注 演示 所使用jar包版本為 lucene 5.2.0.jar lucene索引操作建立索引 try catch exception e 索引日期 document.add new field date datetools.datetostring new d...

docker映象建立與基本使用

在docker環境安裝完成之後,對docker的使用主要集中在docker映象的管理與使用。首先是docker映象的管理,檢視本地有哪些映象可以使用命令 docker images 檢視到本地有哪些映象後,就可以來執行已有的映象了,使用命令 docker run t i ubuntu 15.10 b...