MySQL中索引使用簡例
阿新 • • 發佈:2019-01-06
索引
- 一張表最多不超過4個索引
- 某個欄位的值離散度越高,該欄位越適合做索引的關鍵字。
- 佔用儲存空間少的欄位更適合選做索引的關鍵字。
- 較頻繁的作為where查詢條件的欄位應該建立索引,分組欄位或者排序欄位應該建立索引,兩個表的連線欄位應該建立索引。
- 更新頻繁的欄位不適合做索引,不會出現在where中的欄位不應該建立索引。
- 最左字首原則:
index(id,name,age)
查詢id='' name='' age='' 會使用索引
id='' name='' 不會
id='' age='' 不會,必須從左至右
- 儘量使用字首索引
全文索引fulltext只有在MySAM引擎中有效
show index from 表名;
查看錶中的索引。
注意:在指定主鍵的時候,資料庫會自動在主鍵欄位上創立主鍵索引.
建表時建立索引語法:
create table 表名(
欄位名1 資料型別 [約束條件],
…
[其他約束條件],
…
[ unique | fulltext ] index [索引名] ( 欄位
名 [(長度)] [ asc | desc ] )
) engine=儲存引擎型別 default charset=
字符集型別.
例項:
create table book( isbn char(20) primary key, name char(100) not null, brief_introduction text not null, price decimal(6,2), publish_time date not null, unique index isbn_unique (isbn), index name_index (name (20)), fulltext index brief_fulltext (name,brief_introduction), index complex_index (price,publish_time) ) engine=MyISAM default charset=gbk;
在已有表上建立索引:
語法格式⼀:
create [ unique | fulltext ] index 索引名 on 表名 ( 欄位
名 [(長度)] [ asc | desc ] )
語法格式⼆:
alter table 表名 add [ unique | fulltext ] index 索引名
( 欄位名 [(長度)] [ asc | desc ] )
例項:
create unique index name_index on studentinfo(name(3));
使用索引的格式:
select studentid,score
from score use index(索引名)
where studentid>=3;
select studentid,score
from score use index(index_stuid)
where studentid>=3;
在其他欄位上建立的索引,但查詢的studentid上沒有,在查詢的時候呼叫其他欄位的索引
刪除索引:
drop index 索引名 on 表名;
檢視
create view ppcourse4
as
select
fir.cno,fir.cname as c1,third.cname as c2
from
course fir,course sec,course third
where
fir.cpno = sec.cno
and
sec.cpno = third.cno
select * from ppcourse4
ppcourse4
delete from ppcourse4
drop view ppcourse4