沒有索引與有索引的列資料庫各是如何從磁碟獲取資料的

時間 2021-08-30 10:55:19

1樓:

沒有所以,就直接查詢所需資料,效率很低(前提是你所查詢資料不大於所有資料的30%)左右吧,具體有一個index的設定引數可以調整,在優化資料庫的shih

有索引的,先定位rownum,由rownum找到資料所在的行,然後返回給使用者。

2樓:隨o天

不管資料表有無索引,首先在sga的資料緩衝區中查詢所需要的資料,如果資料緩衝區中沒有需要的資料時,伺服器程序才去讀磁碟。

1、無索引,直接去讀表資料存放的磁碟塊,讀到資料緩衝區中再查詢需要的資料。

2、有索引,先讀入索引表,通過索引表直接找到所需資料的實體地址,並把資料讀入資料緩衝區中。

至於rownum與讀入資料毫無關係,它是查到資料後顯示輸出時附加的一個序號。

3樓:匿名使用者

個人認為,,索引適合在資訊量比較大的表中使用,,如果資訊量少的話,,最好不要用。

資訊量大時,索引能夠提高資料庫的查詢效率,,原理就是能直接通過索引找到其對應的資料。

資訊量少時,索引的作用就不明顯了,,而且資料庫還要有額外的開銷來維持索引,,還不如直接 查詢表來的快,來的效率。

還是個人的感覺,,索引就跟指標有點類似的。

資料庫索引是什麼,有什麼用,怎麼用

4樓:sky小呆呆

資料庫索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。

索引的一個主要目的就是加快檢索表中資料的方法,亦即能協助資訊搜尋者儘快的找到符合限制條件的記錄id的輔助資料結構。

2、資料庫索引的用法

當表中有大量記錄時,若要對錶進行查詢,第一種搜尋資訊方式是全表搜尋,是將所有記錄一一取出,和查詢條件進行一一對比,然後返回滿足條件的記錄,這樣做會消耗大量資料庫系統時間,並造成大量磁碟i/o操作;

第二種就是在表中建立索引,然後在索引中找到符合查詢條件的索引值,最後通過儲存在索引中的rowid(相當於頁碼)快速找到表中對應的記錄。

索引是一個單獨的、物理的資料庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識值的資料頁的邏輯指標清單。

5樓:搜虎哈哈

下面是關於資料庫索引的相關知識:

簡單來說,資料庫索引就是資料庫的資料結構!

進一步說則是該資料結構中儲存了一張表中某一列的所有值,也就是說索引是基於資料表中的某一列建立的。總而言之:一個索引是由表中某一列上的資料組成,並且這些資料儲存在某個資料結構中。

2.索引的作用。舉個例子,假設有一張資料表emplyee,該表有三列:

表中有幾萬條記錄。現在要執行下面這條查詢語句,查詢出所有名字叫「jesus」的員工的詳細資訊

3.如果沒有資料庫索引功能,資料庫系統會逐行的遍歷整張表,對於每一行都要檢查其employee_name欄位是否等於「jesus」。因為我們要查詢所有名字為「jesus」的員工,所以當我們發現了一條名字是「jesus」的記錄後,並不能停止繼續查詢,因為可能有其他員工也叫「jesus」。

這就意味著,對於表中的幾萬條記錄,資料庫每一條都要檢查。這就是所謂的「全表掃描」( full table scan)

4.而資料庫索引功能索引的最大作用就是加快查詢速度,它能從根本上減少需要掃表的記錄/行的數量。

5.如何建立資料庫索引。可以基於employee表的兩列建立索引即可:

拓展資料:

索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。

2.索引的一個主要目的就是加快檢索表中資料的方法,亦即能協助資訊搜尋者儘快的找到符合限制條件的記錄id的輔助資料結構。

3.索引是對資料庫表中一個或多個列(例如,employee 表的姓名 (name) 列)的值進行排序的結構。

4.例如這樣一個查詢:select * from table1 where id=10000。

如果沒有索引,必須遍歷整個表,直到id等於10000的這一行被找到為止;有了索引之後(必須是在id這一列上建立的索引),即可在索引中查詢。由於索引是經過某種演算法優化過的,因而查詢次數要少的多。可見,索引是用來定位的。

5.從資料搜尋實現的角度來看,索引也是另外一類檔案/記錄,它包含著可以指示出相關資料記錄的各種記錄。其中,每一索引都有一個相對應的搜尋碼,字元段的任意一個子集都能夠形成一個搜尋碼。

這樣,索引就相當於所有資料目錄項的一個集合,它能為既定的搜尋碼值的所有資料目錄項提供定位所需的各種有效支援

6樓:夢裡藍天

資料庫索引好比是一本書後的索引,能加快資料庫的查詢速度。

例如這樣一個查詢:select * from table1 where id=44。如果沒有索引,必須遍歷整個表,直到id等於44的這一行被找到為止;有了索引之後(必須是在id這一列上建立的索引),直接在索引裡面找44,就可以得知這一行的位置,也就是找到了這一行。

可見,索引是用來定位的。

索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照資料存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。

7樓:

只是來提高他的查詢速度,向是引導你是的.

設計資料庫中的索引有什麼作用?

8樓:田野裡的小飛俠

設計資料庫中的索引可以大大提高系統的效能:

1、通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

2、可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。

3、可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

4、在使用分組和排序 子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

5、通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

擴充套件資料

索引是建立在資料庫表中的某些列的上面。因此,在建立索引的時候,應該仔細考慮在哪些列上可以建立索引,在哪些列上不能建立索引。一般來說,應該在這些列上建立索引,例如:

1、在經常需要搜尋的列上,可以加快搜尋的速度。

2、在作為主鍵的列上,強制該列的唯一性和組織表中資料的排列結構。

3、在經常用在連線的列上,這 些列主要是一些外來鍵,可以加快連線的速度。

4、在經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍是連續的。

5、在經常需要排序的列上創 建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間。

6、在經常使用在where子句中的列上面建立索引,加快條件的判斷速度。

9樓:匿名使用者

索引可以利用索引快速訪問資料庫表中的特定資訊。索引是對資料庫表中一個或多個列(例如,employee 表的姓氏 (lname) 列)的值進行排序的結構。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。

索引提供指標以指向儲存在表中指定列的資料值,然後根據指定的排序次序排列這些指標。資料庫使用索引的方式與使用書的目錄很相似:通過搜尋索引找到特定的值,然後跟隨指標到達包含該值的行。

在資料庫關係圖中,可以為選定的表建立、編輯或刪除索引/鍵屬性頁中的每個索引型別。當儲存附加在此索引上的表或包含此表的資料庫關係圖時,索引同時被儲存。有關詳細資訊,請參見建立索引。

通常情況下,只有當經常查詢索引列中的資料時,才需要在表上建立索引。索引將佔用磁碟空間,並且降低新增、刪除和更新行的速度。不過在多數情況下,索引所帶來的資料檢索速度的優勢大大超過它的不足之處。

然而,如果應用程式非常頻繁地更新資料,或磁碟空間有限,那麼最好限制索引的數量。

新手問一個問題,資料庫表中主鍵和索引有啥區別和聯絡

10樓:第零象限

主鍵是來

表中的一個或多個欄位

自,它的值用於惟一地標識表中的某一條記錄.且不能為空;

索引是對資料庫表中一列或多列的值進行排序的一種結構,只有當經常查詢索引列中的資料時,才需要在表上建立索引,使用索引可快速訪問資料庫表中的特定資訊。

索引佔用磁碟空間,並且降低新增、刪除和更新行的速度。當然索引也有好處就是查詢速度快,它利還是大於弊的所以請慎重使用索引。

比如:一個學生表(t_stu )有1000條資料,給它id列建個主鍵和索引,

你想查詢id=1000;的這條資訊,如果沒有索引,它就一條一條的比對查詢,系統執行1000次才找到,要是建立了索引,你查詢id=1000的這條資訊,系統只執行一次就找到了。

11樓:

主鍵和索引完全是2嘛事....只能說主鍵擁有索引的一些特性

主鍵與索引的區別

12樓:八哥說科技

1、應用範疇不同:

主鍵屬於索引的一種。在資料庫關係圖中為表定義主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每個值都唯一。

當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。

2、種類不同:

根據資料庫的功能,可以在資料庫設計器中建立三種索引:唯一索引、主鍵索引和聚集索引。而,主鍵只是其中的一種。

3、建立方式不同:

當建立或更改表時可通過定義 primary key 約束來建立主鍵。一個表只能有一個 primary key 約束,而且 primary key 約束中的列不能接受空值。由於 primary key 約束確保唯一資料,所以經常用來定義標識列。

經常在where子句中的列上面建立索引。

13樓:啦啦啦額

1、主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵。

2、一個表中可以有多個唯一性索引,但只能有一個主鍵。

3、主鍵列不允許空值,而唯一性索引列允許空值。

所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行數 據更新、刪除的時 候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外來鍵構成參照完整性約束,防止出現資料不一致。

資料庫在設計時,主鍵起到了很重要的作用。

主鍵可以保證記錄的唯一和主鍵域非空,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。

哪位高手跟我說說,資料庫中索引的用法,怎麼建立,和在se

建立資料庫的目的是管理大量資料,而建立索引的目的就是提高資料檢索效率,改善資料庫工作效能,提高資料訪問速度。當查詢大量資料時不建索引帶條件的查詢會很慢的,索引的建立不同的資料庫有不同的寫法,oracle的寫法是create index 索引名 on 表名 在select 語句中的where條件每個欄...

資料庫管理與資料庫開發的概念有什麼區別

天涯海峰 資料庫管理 有一個職位叫 dba 資料庫管理員。主要是對資料庫備份 安全 映象等操作。在資料庫整個檔案範圍內的管理操作。資料庫開發 1 基於資料的開發,就是寫成程式對資料庫中的資料操作,普遍的 增 刪 改 查。2 開發資料庫,這個比較高階,寫一個資料庫,通俗的講將資料寫入檔案,對寫入方式,...

C與資料庫連線的具體步驟是,c 連線資料庫的步驟是什麼?

樓主需要連結資料庫 首選,要引用名稱空間 using system.data.sqlclient 如果是orcale資料,則using system.data.oracleclient 然後要有連結字串。這個是關鍵,指定資料庫位置,名稱,使用者憑證等資訊 string connection data...