資料庫表的資訊是存在在檔案中的,每個檔案中有很多記錄,你新增一條記錄,檔案中就會多一條記錄。
如果要查詢一條記錄怎麼查詢呢?你會開啟檔案讀取檔案內容,然後看看是不是你要的記錄,查詢任何記錄都要從前向後去比較。就像乙個房間有很多人,你知道要找的人在這個房間,但是具體在什麼位置你不知道,你只有乙個乙個看,直到找到你要找的人,運氣好的話,第乙個人就是你要找的,運氣不好,最後乙個人才是你要找的。效率低不低?
如何解決這個問題呢?如果能記錄每條記錄的位置資訊是不是就可以很快找到呢?例如房間中有很多人,你可以製作乙個座位圖,這樣要找哪個人,先在圖上找出這個人在什麼地方,然後直接到相應的位置找就可以找到。這就是索引。如果座位圖上用的是名字和位置資訊,要是根據名字可以很快找到這個人,要根據編號就沒有辦法查詢了。所以索引是根據記錄的某個屬性(可以是多個)來建立的。
索引為什麼能提高效率呢?因為查詢的時候,可以直接定位,不用遍歷,所以查詢會非常快。當然如果你要查詢某個表的所有記錄對速度不會用太大影響。在表連線的時候是如何提交效率的呢?遍歷第乙個表時候,對於每一條記錄,都會根據連線欄位去查詢關聯表,如果能直接定位就可以直接讀取,如果不能直接定位,在需要遍歷第二張表,表中有多少記錄,就要遍歷多少次。所以如果兩張表分別有3000條記錄,有索引(在關聯欄位上)需要找3000次,如果沒有索引需要找3000*3000/2次,所以效率差別會非常大。
當然也不是說索引越多越好,因為建立索引是需要成本的,包括需要儲存索引列與記錄的對應關係,另外在對資料進行增、刪、改的時候都要對索引進行維護,會影響效率。
索引的使用
1 索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1...
索引的使用
1.建立表 create table zztest id number not null,service tpyeid varchar2 22 totalprice number,constraint test pk primary key id 2.建立索引 create index testna...
索引的使用
主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。唯一性索引列允許空值,而主鍵列不允許為空值。主鍵列在建立時,已經預設為空值 唯一索引了。乙個表最多只能建立乙個主鍵,但可以建立多個唯一索引。主鍵更適合那些不容易更改的唯一標識,如自...