一分鐘實踐數據庫索引

前言

前面咱們以及學習瞭如何利用sql語句進行循環添加數據,在添加了大量的數據以後我們就能夠學習與實踐索引了!!快樂+1 知識+2 好下面咱們開始mysql

image

建立數據循環

測試表代碼sql

create table test(location_id int ,location_name varchar(20));

再編寫存儲過程,其中涉及到循環的使用。咱們欲經過這個存儲過程,來達到往表中插入數據的效果,這裏插入一百萬條Sql數據庫

drop procedure if exists insert_while;
delimiter //
create procedure insert_while()
begin
    declare i int default 1;
    while i<1000000
    do
        insert into test values(i,concat('bookworm',i));
        set i=i+1;
    end while;
    commit;
end //
delimiter ;

運行以及花費時間:oop

mysql> call test_loop();

call insert_while()
OK
時間: 542.984s

image

5種索引以及建立方法

添加主鍵索引: alter table table_name add primary key ( column )學習

添加惟一索引: alter table table_name add unique ( column )測試

普通索引: alter table table_nameadd index index_name( column )spa

全文索引: alter table table_name add fulltext( column )code

添加多列索引: alter table table_name add index index_name( column1, column2, column3 )orm

刪除數據庫索引:drop index indexname on TableNameblog

實驗

先查詢一次吧
SELECT * from test where location_name="bookworm1"

結果耗時

SELECT * from test where location_name="bookworm1"
OK
時間: 0.371s

添加普通索引

alter table test ADD index name_index(`location_name`)
再來查詢一次吧
SELECT * from test where location_name="bookworm1"

結果耗時

SELECT * from test where location_name="bookworm1"
OK
時間: 0.001s

image

若是這個時候再查詢沒有創建索引的列

SELECT * from test where location_id=1

結果:

SELECT * from test where location_id=1
OK
時間: 0.356s

因此創建了索引再進行查詢真的十分快捷 從蟲蟲的小測試就能夠看出足足快了上百倍不止,須要注意的是針對不一樣的查詢列咱們須要創建不一樣的索引

各索引的最佳環境分析

普通索引:惟一任務是加快對數據的訪問速度。所以,應該只爲那些最常常出如今查詢條件,只要有可能,就應該選擇一個數據最整齊、最緊湊的數據列(如一個整數類型的數據列)來建立索引。

惟一索引:若是能肯定某個數據列將只包含彼此各不相同的值,就能夠用惟一索引了,有兩點好處,一是簡化了MySQL對這個索引的管理工做;二是MySQL會在有新記錄插入數據表時,自動檢查新記錄的這個字段的值是否已經在某個記錄的這個字段裏出現過了,若是是,MySQL將拒絕插入那條新記錄。也就是說,惟一索引能夠保證數據記錄的惟一性

主鍵索引:必須爲主鍵字段建立一個索引,這個索引就是所謂的"主索引"

複合索引:

想象一下,您有如下三個查詢:

查詢I:

SELECT * FROM homes WHERE `geolat`=42.9 AND `geolng`=36.4
查詢II:

SELECT * FROM homes WHERE `geolat`=42.9
問題III:

SELECT * FROM homes WHERE `geolng`=36.4

若是每列有單獨的索引,則全部三個查詢都使用索引。在MySQL中,若是您有複合索引(geolat,geolng),則只有查詢I和查詢II(使用composit索引的第一部分)使用索引。在這種狀況下,查詢III須要全表搜索。

全文索引:文本字段上的普通索引只能加快對出如今字段內容最前面的字符串(也就是字段內容開頭的字符)進行檢索操做。若是字段裏存放的是由幾個、甚至是多個單詞構成的較大段文字,普通索引就沒什麼做用了。這種檢索每每以LIKE %word%的形式出現,這對MySQL來講很複雜,若是須要處理的數據量很大,響應時間就會很長。

image

要是能爲您提供幫助,請給予支持(關注、點贊、分享),蟲蟲蟹蟹你們了!

相關文章
相關標籤/搜索