1. 程式人生 > >MySQL中索引使用簡例

MySQL中索引使用簡例

索引

  1. 一張表最多不超過4個索引
  2. 某個欄位的值離散度越高,該欄位越適合做索引的關鍵字。
  3. 佔用儲存空間少的欄位更適合選做索引的關鍵字。
  4. 較頻繁的作為where查詢條件的欄位應該建立索引,分組欄位或者排序欄位應該建立索引,兩個表的連線欄位應該建立索引。
  5. 更新頻繁的欄位不適合做索引,不會出現在where中的欄位不應該建立索引。
  6. 最左字首原則:
index(id,name,age)
查詢id='' name='' age='' 會使用索引
id='' name='' 不會
id='' age='' 不會,必須從左至右
  1. 儘量使用字首索引

全文索引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