索引的建立和刪除
在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,使用unique進行約束,可建立唯一性索引name varchar(20),
*** boolean,
index(id)
);
例項:建立乙個名為index2的資料表,在表內的id欄位上建立乙個唯一性索引,並且設定id欄位以公升序的形式排列。
建立乙個唯一性索引的sql**如下:如上,在id欄位上建立了名為id和index2_id的兩個唯一性索引。這樣做,可以提高資料的查詢速度。create table index2(id int unique,
name varchar(20),
unique index index2_id(id asc)
);
index2_id是為唯一性索引起的乙個新名字。
如果在建立表index2時,id欄位沒有進行唯一約束,也可成功建立唯一索引,但可能達不到提高查詢速度的目的
create table index2(id int,使用全文索引使用fulltext引數,並且只能在char、varchar或text型別的字段上個建立。name varchar(20),
unique index index2_id(id asc)
);
示例:
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 table新增unique(唯一索引)table_name
add primary key (column
)
mysql>alter table新增index(普通索引)table_name
add unique (column
)
mysql>alter table新增fulltext(全文索引)table_name
add index index_name (column
)
mysql>alter table新增多列索引table_name
add fulltext (column
)
mysql>alter tabletable_name
add index index_name (column1
,column2
,column3
)
drop index index_name on talbe_name其中,前兩條語句是等價的,刪除掉table_name中的索引index_name。alter table table_name drop index index_name
alter table table_name drop primary key
第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 ...