資料庫新增索引

2021-08-09 19:12:14 字數 4840 閱讀 9328

在mysql中建立表的時候,可以直接建立索引。基本的語法格式如下:

create table 表名(欄位名 資料型別 [完整性約束條件],

[unique | fulltext | spatial]

index | key

[索引名](欄位名1 [(長度)] [asc | desc])

);

建立乙個普通索引時,不需要加任何unique、fulltext或者spatial引數。

例項:建立乙個名為index1的資料表,在表內的id欄位上建立乙個普通索引。

1. 建立普通索引的sql**如下:

create table index1(id int,

name varchar(20),

*** boolean,index(id));

在dos提示符視窗中檢視mysql建立普通索引的操作效果。如下圖所示:

從上圖中可以看出,執行結果顯示普通索引建立成功。

2. 使用show create table

語句檢視表的結構。如下圖所示:

從上圖中可以看出,在id欄位上已經建立了乙個名為id的普通索引。

語句:

key `id` (`id`)

圓括號內的id是欄位名稱,圓括號左側外面的id是索引名稱。

3. 使用explain語句檢視索引是否被使用。sql**如下:

explain select * from index1 where id=1 \g

在dos提示符視窗中檢視使用explain語句檢視索引是否被使用的操作效果。如下圖所示:

上圖中的結果顯示,possible_keys和key的值都為id。說明id索引已經存在,並且查詢時已經使用了索引。

如果使用unique引數進行約束,則可以建立唯一性索引。

例項:建立乙個名為index2的資料表,在表內的id欄位上建立乙個唯一性索引,並且設定id欄位以公升序的形式排列。

1. 建立乙個唯一性索引的sql**如下:

create table index2(id int unique,

name varchar(20),unique index index2_id(id asc));

index2_id是為唯一性索引起的乙個新名字。

在dos提示符視窗中檢視mysql建立唯一性索引的操作效果。如下圖所示:

從上圖中可以看出,執行結果顯示建立成功。

2. 使用show create table語句檢視表的結構。sql**如下:

show create table index2 \g

在dos提示符視窗中檢視使用show create table語句檢視表的結構的效果。如下圖所示:

從上圖中可以看出,在id欄位上建立了名為id和index2_id的兩個唯一性索引。這樣做,可以提高資料的查詢速度。

如果在建立index2表時,id欄位沒有進行唯一性結束。如下所示:

create table index2(id int,

name varchar(20),unique index index2_id(id asc));

則也可以在id欄位上成功建立名為index2_id的唯一性索引。但是,這樣可能達不到提高查詢速度的目的。

全文索引使用fulltext引數,並且只能在char、varchar或text型別的字段上建立。

全文索引可以用於全文搜尋。

現在,myisam儲存引擎和innodb儲存引擎都支援全文索引。

例項:建立乙個名為index3的資料表,在表中的info欄位上建立名為index3_info的全文索引。

1. 建立全文索引的sql**如下:

create table index3(id int,

info varchar(20),fulltext index index3_info(info))engine=myisam;

如果設定engine=innodb,則可以在innodb儲存引擎上建立全文索引。

在dos提示符視窗中檢視mysql建立全文索引的操作效果。如下圖所示:

從上圖中可以看出,**的執行結果顯示建立成功。

2. 使用show create table語句檢視index3資料表的結構。如下圖所示:

從上圖中可以看出,在info欄位上已經建立了乙個名為index3_info的全文索引。

我使用的是mysql 5.6.19版本,已經可以在innodb儲存引擎中建立全文索引了。

全文索引非常適合於大型資料集,對於小的資料集,它的用處可能比較小。

單列索引是在資料表的單個欄位上建立的索引。乙個表中可以建立多個單列索引。唯一性索引和普通索引等都為單列索引。

例項:建立乙個名為index4的資料表,在表中的subject欄位上建立名為index4_st的單列索引。

1. 建立單列索引的sql**如下:

create table index4(id int,

subject varchar(30),index index4_st(subject(10)));

在dos提示符視窗中檢視mysql建立單列索引的操作效果。如下圖所示:

從上圖中可以看出,**執行的結果顯示建立成功。

2. 使用show create table語句檢視index4資料表的結構。如下圖所示:

從上圖中可以看出,在subject欄位上已經建立了乙個名為index4_st的單列索引。

注意:subject字段長度為30,而index4_st設定的索引長度只有10,這樣做是為了提高查詢速度。對於字元型的資料,可以不用查詢全部資訊,而只查詢它前面的若干字元資訊。

建立多列索引是在表的多個欄位上建立乙個索引。

例項:建立乙個名為index5的資料表,在表中的name和***欄位上建立名為index5_ns的多列索引。

1. 建立多列索引的sql**如下:

create table index5(id int,

name varchar(20),

*** char(4),index index5_ns(name,***));

在dos提示符視窗中檢視mysql建立多列索引的操作效果。如下圖所示:

從上圖中可以看出,**的執行結果顯示index5_ns索引建立成功。

2. 使用show create table語句檢視index5資料表的結構。如下圖所示:

從上圖中可以看出,name和***欄位上已經建立了乙個名為index5_ns的多列索引。

3. 多列索引中,只有查詢條件中使用了這些欄位中第乙個欄位時,索引才會被使用。

先在index5資料表中新增一些資料記錄,然後使用explain語句可以檢視索引的使用情況。如果只是使用name欄位作為查詢條件進行查詢。如下圖所示:

從上圖中可以看出,possible_keys和key的值都是index5_ns。extra(額外資訊)顯示正在使用索引。這說明使用name欄位進行索引時,索引index5_ns已經被使用。

4. 如果只使用***字段作為查詢條件進行查詢。如下圖所示:

從上圖中可以看出,possible_keys和key的值都是null。extra(額外資訊)顯示正在使用where條件查詢,而未使用索引。

使用多列索引時一定要特別注意,只有使用了索引中的第乙個欄位時才會觸發索引。如果沒有使用索引中的第乙個字段,那麼這個多列索引就不會起作用。因此,在優化查詢速度時,可以考慮優化多列索引。

使用spatial引數能夠建立空間索引。建立空間索引時,表的儲存引擎必須是myisam型別。而且,索引字段必須有非空約束。

例項:建立乙個名為index6的資料表,在表中的space欄位上建立名為index6_sp的空間索引。

1. 建立空間索引的sql**如下:

create table index6(id int,

space geometry not null,spatial index index6_sp(space))engine=myisam;

在dos提示符視窗中檢視mysql建立空間索引的操作效果。如下圖所示:

從上圖可以看出,**執行的結果顯示空間索引建立成功。

2. 使用show create table語句可看index6資料表的結構。如下圖所示:

從上圖中可以看出,在space欄位上已經建立了乙個名為index6_sp的空間索引。

注意,space欄位是非空的,而且資料型別是geometry型別。這個型別是空間資料型別。

空間資料型別包括geometry、point、linestring和polygon型別等。這些空間資料型別平時很少用到

1.新增primary key(主鍵索引) 

mysql>alter table `table_name` add primary key ( `column` ) 

2.新增unique(唯一索引) 

mysql>alter table `table_name` add unique ( 

`column` 

) 3.新增index(普通索引) 

mysql>alter table `table_name` add index index_name ( `column` ) 

4.新增fulltext(全文索引) 

mysql>alter table `table_name` add fulltext ( `column`) 

5.新增多列索引 

mysql>alter table `table_name` add index index_name ( `column1`, `column2`, `column3` )

資料庫新增索引

前言 這裡我們學習如何利用sql語句進行迴圈新增資料,並在新增了大量的資料之後咱們就可以用到索引了 快樂 1 知識 2 建立資料迴圈 測試表 create table test location id int location name varchar 20 再編寫儲存過程,其中涉及到迴圈的使用。我...

為資料庫新增索引

就象許多的 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 普通索引...