索引的概念
索引是定義在存儲(chǔ)表(Table)的基礎(chǔ)之上,有助于無需檢查所有記錄而快速定位所需記錄的一種輔助存儲(chǔ)機(jī)構(gòu),由一系列存儲(chǔ)在磁盤上的索引項(xiàng)(index entries)組成,每一索引項(xiàng)又由兩部分構(gòu)成:索引字段和行指針
存儲(chǔ)索引項(xiàng)的文件為索引文件,存儲(chǔ)表稱為主文件。
索引的存在與否不改變存儲(chǔ)表的物理存儲(chǔ)結(jié)構(gòu),其目的是可以明顯提高存儲(chǔ)表的訪問速度。
索引文件組織方式有兩種:
排序索引文件:按索引字段值的某一順序組織存儲(chǔ)
散列索引文件:依據(jù)索引字段值使用散列函數(shù)分配散列桶的方式存儲(chǔ)。
(主文件組織有堆文件、排序文件、散列文件、聚簇文件等)
索引字段的值可以是Table中的任何一個(gè)屬性的值或者多個(gè)屬性值的組合值。
索引文件比主文件小很多,通過檢索一個(gè)小的索引文件(可全部裝載進(jìn)進(jìn)內(nèi)存),快速定位后,再有針對(duì)性的讀取非常大的主文件中的有關(guān)記錄。
索引技術(shù)應(yīng)用使檢索效率大幅度提高,但同時(shí)也增加了存儲(chǔ)空間、使維護(hù)負(fù)擔(dān)加重(要同時(shí)維護(hù)主文件和索引文件)
衡量索引性能好壞:
訪問時(shí)間、插入時(shí)間、刪除時(shí)間、空間負(fù)載、支持存取的有效性(比如:支持的是屬性的限定值還是支持屬性的限定范圍的值)
對(duì)經(jīng)常出現(xiàn)在檢索條件、連接條件、分組計(jì)算條件中的屬性可建立索引。
SQL語(yǔ)言關(guān)于索引
1.基本知識(shí)
當(dāng)定義Table后,如果定義了主鍵,則系統(tǒng)將自動(dòng)創(chuàng)建主索引,利用主索引對(duì)Table進(jìn)行快速定位、檢索與更新操作。
當(dāng)索引被創(chuàng)建后,無論是主索引還是用戶創(chuàng)建的索引,DBMS都將自動(dòng)維護(hù)所有的索引。
當(dāng)Table被刪除后(drop table),定義在該Table上的所有索引將自動(dòng)被撤銷。
2.創(chuàng)建和維護(hù)索引的SQL語(yǔ)句
創(chuàng)建索引:
CREATE [UNIQUE] INDEX indexname
? ? ? ? ? ? ? ON tablename ( colname[asc|desc] ...);
【一般默認(rèn)是asc,表示從小到大排序;desc表示從大到小排序】
示例:在student表中創(chuàng)建一個(gè)基于Sname的索引
create index idxSname on student(sname);
示例:在student表中創(chuàng)建一個(gè)基于Sname和Sclass的索引
create index idxSnamcl on student(sname,sclass);
示例:撤銷用戶創(chuàng)建的索引
drop index indexname;
?
轉(zhuǎn)載于:https://www.cnblogs.com/labixinxinyexiangyouxiaobai/p/9737343.html
總結(jié)
- 上一篇: List注意啊
- 下一篇: BZOJ2330 SCOI2011糖果