MySql中索引的建立和刪除

2021-09-10 17:05:51 字數 3412 閱讀 2482

索引的建立和刪除

在mysql中建立表的時候可以直接建立索引

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

[unique | fulltext | spatial] index | key

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

)示例:

create table index1 (id int ,

name varchar(20) ,

*** boolean ,

index ( id) //宣告索引

);

檢視索引是否建立:

show create table;

檢視索引是否使用:

explain select * from index1 where id =1 \g

建立普通索引不需要新增任何unique、fulltext、或者spatial關鍵字

示例:建立乙個名為index1的資料庫,並在表id上建立乙個普通索引

create table index1(id int,

name varchar(20),

*** boolean,

index(id)

);

使用unique進行約束,可建立唯一性索引

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

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

create table index2(id int unique,

name varchar(20),

unique index index2_id(id asc)

);

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

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

如果在建立表index2時,id欄位沒有進行唯一約束,也可成功建立唯一索引,但可能達不到提高查詢速度的目的

create table index2(id int,

name varchar(20),

unique index index2_id(id asc)

);

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

示例:

create table index3(id int,

info varchar(20),

fulltext index index3_info(info)

)engine=myisam;

注意

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

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

create table index4(id int,

subject varchar(30),

index index4_st(subject(10))

);

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

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

create table index5(id int,

name varchar(20),

*** char(4),

index index5_ns(name,***)

);

注意

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

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

create table index6(id int,

space geometry not null,

spatial index index6_sp(space)

)engine=myisam;

注意

新增primary key(主鍵索引)

mysql>alter tabletable_nameadd primary key (column)

新增unique(唯一索引)

mysql>alter tabletable_nameadd unique (column)

新增index(普通索引)

mysql>alter tabletable_nameadd index index_name (column)

新增fulltext(全文索引)

mysql>alter tabletable_nameadd fulltext (column)

新增多列索引

mysql>alter tabletable_nameadd index index_name (column1,column2,column3)

drop index index_name on talbe_name

alter table table_name drop index index_name

alter table table_name drop primary key

其中,前兩條語句是等價的,刪除掉table_name中的索引index_name。

第3條語句只在刪除primary key索引時使用,因為乙個表只可能有乙個primary key索引,因此不需要指定索引名。如果沒有建立primary key索引,但表具有乙個或多個unique索引,則mysql將刪除第乙個unique索引。

如果從表中刪除了某列,則索引會受到影響。對於多列組合的索引,如果刪除其中的某列,則該列也會從索引中刪除。如果刪除組成索引的所有列,則整個索引將被刪除。

mysql建立和刪除索引

摘自 longkm的部落格 建立和刪除索引 索引的建立可以在create table語句中進行,也可以單獨用create index或alter table來給表增加索引。刪除索引可以利用alter table或drop index語句來實現。1 使用alter table語句建立索引。語法如下 a...

mysql建立和刪除索引

2 索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快 成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為...

mysql 索引的建立和刪除

mysqlinnodb 儲存引擎會為 primary key 和 unique 列自動建立 b 樹索引。這兩個列無須手動建立索引。create table test demo id int name varchar 10 age int address varchar 50 primary key ...