目錄:
一够掠、MYSQL
二民褂、Sqlserver
三、ORACLE
四疯潭、索引作用
前言:如果你閱讀這篇文章只想找創(chuàng)建索引的語法赊堪,直接復(fù)制創(chuàng)建普通索引的語法即可。
如果你想了解并學(xué)習(xí)各類索引袁勺,可以結(jié)合推薦的鏈接進(jìn)行學(xué)習(xí)
一踪少、MYSQL
MySQL索引分為普通索引恢着、唯一索引、主鍵索引、組合索引较曼、全文索引割岛。
1遣鼓、MySQL創(chuàng)建普通索引滨溉,沒有任何約束
CREATE INDEX 索引名 ON 表名(字段名)
例:
CREATE INDEX score_index ON maoyantop(score);
2、MySQL唯一索引
它與前面的普通索引類似埠通,不同的就是:索引列的值必須唯一赎离,但允許有空值。如果是組合索引端辱,則列值的組合必須唯一梁剔。
CREATE UNIQUE INDEX 索引名 ON 表名(字段名)
3、MySQL主鍵索引
是一種特殊的唯一索引舞蔽,一個(gè)表只能有一個(gè)主鍵荣病,不允許有空值。一般是在建表的時(shí)候同時(shí)創(chuàng)建主鍵索引
ALTER TABLE 表名 ADD PRIMARY KEY(字段名)
例:
ALTER TABLE AIS_MDXSJERI ADD PRIMARY KEY(DH,SJ)
4渗柿、MySQL組合索引
指多個(gè)字段上創(chuàng)建的索引个盆,只有在查詢條件中使用了創(chuàng)建索引時(shí)的第一個(gè)字段,索引才會(huì)被使用。使用組合索引時(shí)遵循最左前綴集合
ALTER TABLE 表名 ADD INDEX 索引名 (字段1,字段2,字段3);
例:
ALTER TABLE AIS_MDXSJERI ADD INDEX_DHSJ(DH,SJ)
5颊亮、MySQL查看索引
SHOW INDEX FROM 表名
例:
SHOW INDEX FROM AIS_Cashier
mysql索引推薦文章一
mysql索引推薦文章二(點(diǎn)擊藍(lán)色字體可跳轉(zhuǎn)到相應(yīng)網(wǎng)頁)
二柴梆、Sqlserver
Sqlserver索引分為聚簇索引、非聚簇索引(普通索引)终惑、唯一索引绍在、主鍵索引
CREATE [索引類型] INDEX 索引名稱 ON 表名(列名)
1、Sqlserver非聚簇索引(普通索引)
非聚集索引就相當(dāng)于使用字典的部首查找狠鸳,非聚集索引是邏輯上的連續(xù)揣苏,物理存儲(chǔ)并不連續(xù)
create nonclustered index 索引名 on 表名 (字段名);
例:
create nonclustered index index_sno on dbo.Student(Sno)
2悯嗓、Sqlserver聚簇索引(主鍵索引)
一個(gè)表最多只能有一個(gè)聚簇索引件舵。創(chuàng)建主鍵的時(shí)候會(huì)自動(dòng)創(chuàng)建聚簇索引
create clustered index 索引名 on 表名 (字段);
例:
create clustered index index_DHSJ on AIS_MDXSJERI(MDLX);
3、Sqlserver唯一索引(UNIQUE)
唯一索引可以作為數(shù)據(jù)的一個(gè)合法驗(yàn)證手段,例如學(xué)生表的身份證號碼字段,我們?nèi)藶橐?guī)定該字段不得重復(fù),那么就使用唯一索引(唯一索引允許索引字段為空)
create unique index 索引名 on 表名(字段名);
例:
create unique index index_DHSJ on AIS_MDXSJERI(DHSJ);
4脯厨、Sqlserver刪除索引
創(chuàng)建主鍵時(shí)自動(dòng)創(chuàng)建的索引是不能刪除的
Drop index 表名.索引名
例:
Drop index dbo.Sm_idx_SMDTV_1.dx_SMDTV_1__68487DD7;
4铅祸、Sqlserver查看指定表中的索引
Execute sp_helpindex @objname='TMAIN.T_BAS_ENTERLIST_PRO';
例:
Execute sp_helpindex @objname = 'dbo.Student'
sqlserver索引文章推薦一
sqlserver索引文章推薦二
三、ORACLE
ORACLE索引分為唯一索引合武、非唯一索引临梗、主鍵索引
1、ORACLE非唯一索引(普通索引)
CREATE INDEX 索引名 on 表名(列名 DESC)
2稼跳、ORACLE唯一索引
CREATE unique INDEX 索引名 on 表名(列名 DESC)
例:
CREATE unique INDEX index_Sage on YWWATER.Student(Sage DESC)
3盟庞、ORACLE主鍵索引
ORACLE在創(chuàng)建主鍵得時(shí)候就會(huì)自動(dòng)創(chuàng)建索引
alter table 表名 add constraint 主鍵名 primary key(字段)
例:
alter table YWWATER.Student add constraint index_Sno primary key(Sno)
4、ORACLE刪除索引
刪除表主鍵
ALTER TABLE 表明 DROP CONSTRAINT 主鍵名;
刪除索引
drop index 索引名;
4汤善、ORACLE查看表中索引
select * from user_ind_columns where table_name = upper('表名')
例:
關(guān)于ORACLE創(chuàng)建索引方面的文章找了很多什猖,任然沒找到滿意文章,如果大家看見ORACLE索引方面的文章红淡,麻煩推薦一下不狮。
四、索引作用
索引主要目的是提高系統(tǒng)的性能在旱,加快數(shù)據(jù)的查詢速度與減少系統(tǒng)的響應(yīng)時(shí)間 摇零。
但是索引對于提高查詢性能也不是萬能的,也不是建立越多的索引就越好桶蝎。
- 索引建少了驻仅,用 WHERE 子句找數(shù)據(jù)效率低,不利于查找數(shù)據(jù)登渣。
- 索引建多了噪服,不利于新增、修改和刪除等操作绍豁,因?yàn)樽鲞@些操作時(shí)芯咧,除了要更新數(shù)據(jù)表本身,還要連帶立即更新所有的相關(guān)索引,而且過多的索引也會(huì)浪費(fèi)硬盤空間敬飒。
索引定義原則:
1邪铲、避免對經(jīng)常更新的表進(jìn)行過多的索引,并且索引中的列盡可能少无拗。
2带到、對經(jīng)常用于查詢的字段應(yīng)該創(chuàng)建索引,但要避免添加不必要的字段英染。
3揽惹、在條件表達(dá)式中經(jīng)常用到的、不同值較多的列上建立索引四康,在不同值少的列上不要建立索引搪搏。
4、在頻繁進(jìn)行排序或分組(即進(jìn)行 GROUP BY 或 ORDER BY 操作)的列上建立索引闪金,如果待排序的列有多個(gè)疯溺,可以在這些列上建立組合索引。
5哎垦、在選擇索引鍵時(shí)囱嫩,盡可能采用小數(shù)據(jù)類型的列作為鍵以使每個(gè)索引頁能容納盡可能多的索引鍵和指針,通過這種方式漏设,可使一個(gè)查詢必需遍歷的索引頁面降低到最小墨闲,此外,盡可能的使用整數(shù)做為鍵值郑口,因?yàn)檎麛?shù)的訪問速度最快鸳碧。