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