1.索引
創(chuàng)建:
CREATE INDEX? 索引名? ON TABLE(列名1,列名2溪王,...)
每個(gè)索引必須有唯一名字,在括號(hào)內(nèi)列出索引包含的列(可以為多列)
擴(kuò)展形式:
CREATE? [UNIQUE]? [CLUSTERED | NONCLUSTERED ]? INDEX? 索引名
ON? {TABLE | VIEW } (列1 [ASC | DESC] ...)
UNIQUE:唯一性索引值骇,不允許表中不同行在索引列上取相同值
CLUSTERED | NONCLUSTERED:聚集和非聚集索引莹菱。缺省時(shí),創(chuàng)建為非聚集索引
ASC | DESC:索引表中索引值的排序次序
eg: CREATE INDEX? name_index ON? StudentInfo(Sname)
使用:
SELECT? column1, column2 ... FROM? TABLE?
WITH? (INDEX(index_name))
WHERE? condition
刪除:
DROP? INDEX? index_name
SQL Sever 中吱瘩,刪除索引時(shí)一定要指明索引所在的表的名字
DROP? INDEX? table_name.index_name
使用索引的注意點(diǎn):
1.對于小的數(shù)據(jù)表道伟,使用索引不能夠提高檢索效率,因此不需要?jiǎng)?chuàng)建
2.當(dāng)用戶要檢索的字段有很多數(shù)值或很多空值使碾,為該字段創(chuàng)建索引蜜徽,會(huì)大大提高效率
3.當(dāng)用戶查詢表中的數(shù)據(jù)時(shí),如果查詢結(jié)果包含的數(shù)據(jù)行較少票摇,一般少于數(shù)據(jù)總數(shù)的25%娜汁,使用索引會(huì)提高效率
4.索引列在where子句中應(yīng)頻繁使用
5.建表后,應(yīng)先裝數(shù)據(jù)兄朋,再建索引掐禁,否則,每次插入數(shù)據(jù)就要維護(hù)一次索引
6.索引提高了檢索速度颅和,但也降低了數(shù)據(jù)更新速度
7.盡量把表和它的索引放在不同磁盤上傅事,會(huì)提高查詢速度
視圖
視圖是從一個(gè)或多個(gè)表中導(dǎo)出的表,不是真實(shí)存在峡扩,而是一張?zhí)摫聿湓健Mㄟ^視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。當(dāng)我們對視圖中的數(shù)據(jù)進(jìn)行修改時(shí)教届,相應(yīng)的基本表的數(shù)據(jù)也會(huì)發(fā)生變化响鹃;同樣,基本表的變化也會(huì)反映到視圖中案训。
視圖的優(yōu)點(diǎn):
1.簡化操作买置。視圖本身是一個(gè)復(fù)雜查詢的結(jié)果集,因此每一次執(zhí)行相同查詢時(shí)强霎,不必重寫語句忿项,而是對視圖操作即可
2.定制數(shù)據(jù)。視圖能夠讓不同的用戶以不同的方式看到不同或相同的數(shù)據(jù)
3.合并分隔數(shù)據(jù)
4.安全性。通過視圖轩触,用戶只能查看和修改他們所能看見的數(shù)據(jù)寞酿。其他數(shù)據(jù)庫或者表既不可見也不能訪問。視圖所引用的表的訪問權(quán)限與視圖權(quán)限的設(shè)置互不影響
缺點(diǎn):
1.性能脱柱。由于視圖是虛擬表伐弹,每次查詢還要執(zhí)行定義視圖的查詢,影響了查詢效率
2.更新限制榨为。不是所有視圖都是可更新的