資料庫新增索引

2021-10-08 04:23:37 字數 3299 閱讀 6890

前言

————————————————
這裡我們學習如何利用sql語句進行迴圈新增資料,並在新增了大量的資料之後咱們就可以用到索引了!!快樂+1 知識+2

建立資料迴圈

測試表**

create table test

(location_id int

,location_name varchar(20));

再編寫儲存過程,其中涉及到迴圈的使用。我們欲通過這個儲存過程,來達到往表中插入資料的效果,這裡插入一百萬條sql(「願做bookworm」博主內容,我們只需10萬即可,資料越多,測試效果越明顯,但是電腦帶不動就不要輕易嘗試新增這麼多資料了)

drop procedure if exists insert_while;

delimiter //

create procedure insert_while()

begin

declare i int

default1;

while i<

1000000

//注意:最好應自己電腦配置的實際情況而定!!!

do insert into test values

(i,concat

('bookworm'

,i))

;set i=i+1;

end while

; commit;

end //

delimiter ;

mysql> call test_loop()

;call insert_while()

ok時間:

5種索引以及建立方法

新增主鍵索引: alter table table_name add primary key ( column )

新增唯一索引: alter table table_name add unique ( column )

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

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

新增多列索引: alter table table_name add index index_name(column1,column2, column3 )

刪除資料庫索引:drop index indexname on tablename

實驗先查詢一次吧

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

如果這個時候再查詢沒有建立索引的列

select *

from test where location_id=

1

結果:

select *

from test where location_id=1ok

時間: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來說很複雜,如果需要處理的資料量很大,響應時間就會很長。

資料庫新增索引

在mysql中建立表的時候,可以直接建立索引。基本的語法格式如下 create table 表名 欄位名 資料型別 完整性約束條件 unique fulltext spatial index key 索引名 欄位名1 長度 asc desc 建立乙個普通索引時,不需要加任何unique fullte...

為資料庫新增索引

就象許多的 php開發者一樣,在剛開始建立動態 的時候,我都是使用相對簡單的資料結構。php在連線資料庫方面的確實是十分方便 譯者注 有些人認為php在連線不同資料庫時沒有乙個統一的介面,不太方便,其實這可以通過一些擴充套件庫來做到這一點 你無需看大量的設計文件就可以建立和使用資料庫,這也是php獲...

資料庫表新增索引

1.新增primary key 主鍵索引 mysql alter table table name add primary key column 2.新增unique 唯一索引 mysql alter table table name add unique column 3.新增index 普通索引...