當前位置:首頁 » 電腦資訊 » 為什麼要建立工程文件索引

為什麼要建立工程文件索引

發布時間: 2022-07-11 00:24:46

⑴ 為什麼資料庫表要建立索引

索引是以表列為基礎的資料庫對象。索引中保存著表中排序的索引列,並且紀錄了索引列在資料庫表中的物理存儲位置,實現了表中數據的邏輯排序。通過索引,可以加快數據的查詢速度和減少系統的響應時間;可以使表和表之間的連接速度加快。 用SQL建立索引: 為了給一個表建立索引,啟動任務欄SQL Sever程序組中的ISQL/w程序。進入查詢窗口後,輸入下面的語句: CREATE [UNIQUE] [CLUSER] INDEX ON (); UNIQUE 表明此索引的每一個索引值只對應唯一的數據記錄 CLUSTER 表明要建立的是聚簇索引(指索引項的順序與表中記錄的物理順序一致) 例:CREATE CLUSER INDEX Stuname ON Student(Sname); 在student表的sname列建立一個聚簇索引,student中記錄按照sname值的升序排列 參考資料: <

⑵ 時候為什麼要建立索引

在一個或者一些欄位需要頻繁用作查詢條件,並且表數據較多的時候,創建索引會明顯提高查詢速度,因為可由全表掃描改成索引掃描。(無索引時全表掃描也就是要逐條掃描全部記錄,直到找完符合條件的,索引掃描可以直接定位)
索引並不是越多越好,太多索引會佔用很多的索引表空間,甚至比存儲一條記錄更多。

⑶ 什麼是索引文件為什麼要引入多級索引

什麼是索引文件?為什麼要引入多級索引?索引文件是一個文件的內容提要。要引入多級索引文件主要是為了檢索方便,快速查找到文件。

⑷ 什麼是索引為什麼要建立索引並舉例說明.(以某一具體的DBMS為例)

索引是表示數據的另一種方式,它提供的數據順序不同於數據在磁碟上的物理存儲順序。索引的特殊作用是在表內重新排列記錄的物理位置。索引可建立在數據表的一列上,或建立在表的幾列的組合上。

回想一下圖書館中,存放著一架一架的圖書。假設要找一本書,圖書管理員視必要一架一架的尋找,直到找到想要的那本書為止。這樣的查找肯定費時費力,那麼管理員可以將所有的圖書標題按字母分類建立索引卡片,按字母順序放在不同的辦公抽屜中,這樣一架一架查找圖書的過程就變成了在辦公桌前抽屜中查詢索引卡片了,很容易得到有關這本書的信息。

再進一步設想,圖書管理員很勤快,他不僅按照圖書標題字母分類,而且還按作者姓名和出版社分別建立了另外的索引卡片,這個過程將給借閱者在檢索圖書信息時以更大的靈活性。因此在一個數據表中是可以建立多個索引的。

在資料庫中,對無索引的表進行查詢一般稱為全表掃描。全表掃描是資料庫伺服器用來搜尋表的每一條記錄的過程,直到所有符合給定條件的記錄返回為止。這個操作可以比作在圖書館中查書,從第一個書架的第一本書開始,瀏覽每一本書,直到發現所要的書為止。為了進行高效查詢,可以在數據表上針對某一欄位建立索引,由於該索引包括了一個指向數據的指針,資料庫伺服器則只沿著索引排列的順序對僅有一列數據的索引進行讀取(只建立一個索引)直至索引指針指向相應的記錄上為止。由於索引只是按照一個欄位進行查找,而沒有對整表進行遍歷,因此一般說來索引查找比全表掃描的速度快。

那麼,是不是使用索引查詢一定比全表掃描的速度快呢?答案是否定的。如果查詢小型數據表(記錄很少)或是查詢大型數據表(記錄很多)的絕大部分數據,全表掃描更為實用。例如,查詢「性別」欄位,其值只能是「男或女」,在其上建立索引的意義就不大,甚至不允許在布爾型、大二進制型(備注型、圖像型等)上建立索引。

示例:http://www.diylsoft.com/diylsoft/html/manual/DBQuery/IndexSummarize.htm
聚簇索引:
http://ke..com/view/1028053.html?wtp=tt

⑸ 為什麼要建立索引

資料庫索引是為了增加查詢速度而對表欄位附加的一種標識。見過很多人機械的理解索引的概念,認為增加索引只有好處沒有壞處。
這里想把之前的索引學習筆記總結一下:
首先明白為什麼索引會增加速度,DB在執行一條Sql語句的時候,默認的方式是根據搜索條件進行全表掃描,遇到匹配條件的就加入搜索結果集合。如果我們對某一欄位增加索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢的速度。那麼在任何時候都應該加索引么?這里有幾個反例:1、如果每次都需要取到所有表記錄,無論如何都必須進行全表掃描了,那麼是否加索引也沒有意義了。2、對非唯一的欄位,例如「性別」這種大量重復值的欄位,增加索引也沒有什麼意義。3、對於記錄比較少的表,增加索引不會帶來速度的優化反而浪費了存儲空間,因為索引是需要存儲空間的,而且有個致命缺點是對於update/insert/delete的每次執行,欄位的索引都必須重新計算更新。
那麼在什麼時候適合加上索引呢?我們看一個Mysql手冊中舉的例子,這里有一條sql語句:
SELECTc.companyID,c.companyNameFROMCompaniesc,UseruWHEREc.companyID=u.fk_companyIDANDc.numEmployees>=0ANDc.companyNameLIKE'%i%'ANDu.groupIDIN(SELECTg.groupIDFROMGroupsgWHEREg.groupLabel='Executive')
這條語句涉及3個表的聯接,並且包括了許多搜索條件比如大小比較,Like匹配等。在沒有索引的情況下Mysql需要執行的掃描行數是77721876行。而我們通過在companyID和groupLabel兩個欄位上加上索引之後,掃描的行數只需要134行。在Mysql中可以通過ExplainSelect來查看掃描次數。可以看出來在這種聯表和復雜搜索條件的情況下,索引帶來的性能提升遠比它所佔據的磁碟空間要重要得多。
那麼索引是如何實現的呢?大多數DB廠商實現索引都是基於一種數據結構——B樹。因為B樹的特點就是適合在磁碟等直接存儲設備上組織動態查找表。B樹的定義是這樣的:一棵m(m>=3)階的B樹是滿足下列條件的m叉樹:
1、每個結點包括如下作用域(j,p0,k1,p1,k2,p2,...ki,pi)其中j是關鍵字個數,p是孩子指針
2、所有葉子結點在同一層上,層數等於樹高h
3、每個非根結點包含的關鍵字個數滿足[m/2-1]<=j<=m-1
4、若樹非空,則根至少有1個關鍵字,若根非葉子,則至少有2棵子樹,至多有m棵子樹

⑹ 為什麼要引入索引分配方式其主要問題是什麼

索引節點,其英文為 Inode,是 Index Node 的縮寫。索引節點是整個 Linux
文件系統的基礎。存儲於文件系統上的任何文件都可以用索引節點來表示。舉一個例子來說,假設有一個老圖書館裡面有一本登記簿,上面記錄著館內的書名及存放

位置,比如在哪一間的第幾排存放著哪一本書,以及書的作者是誰。在這里,記錄著一本書的那一行就是索引節點。索引節點以同樣的方式來存儲對象,我們會在下
面學習。

在 Linux 系統中,文件系統主要分為兩部分,一部分為元數據(metadata),另一部分為數據本身。元數據,換句話說,就是「包含了與數據有關信息的數據」。索引節點就管理著文件系統中元數據的部分。

索引節點基礎知識

如上所述,文件系統中的任何一個文件或目錄都與一個索引節點相對應。每個索引節點都是一個數據結構,存儲著目標數據的如下信息:

文件大小(以位元組為單位)
(存放文件的)設備標識符
(文件所有者的)用戶標識符
用戶組標識符
文件模式(所有者、用戶組及其他人對於文件的讀取有怎樣的許可權)
擴展屬性(如 ACL)
文件讀取或修改的時間戳
鏈接數量(指向該文件的硬鏈接數,記住,軟鏈接不計算在內)
指向存儲該內容的磁碟區塊的指針
文件分類(是普通文件、目錄還是特殊區塊設備)
文件佔用的區塊數量

Linux 文件系統從來不存儲文件創建時間,許多人都不清楚這一點。

一個典型的索引數據看起來會是像下面這樣:

# stat 01

Size:Blocks:1816IO Block:4096regular file

Device:803h/2051dInode:Links:1

Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)

Access:2012-09-0701:46:54.-0500

Modify:2012-04-2706:22:02.-0500

Change:2012-04-2706:22:02.-0500

索引節點是在何時並以怎樣的方式創建的?

索引節點的創建與正在使用的文件系統有關。一些文件系統在創建時就創建了索引節點,故其索引節點的數量有限。而一些如 JFS 和 XFS 等系統也在文件系統創建時創建索引節點,但使用動態節點分配,並按需擴大索引節點的數量,因此可以避免所有索引節點用完的情況。

當讀取文件時都發生了什麼?

當用戶試圖讀取文件或與該文件相關的信息時,他會使用文件名稱。但是,實質上這個文件名稱首先映射為存儲於目錄表中的索引點節號碼。通過該索引節點號碼又讀取到相對應的索引節點。索引節點號碼及相對應的索引節點存放於映射表(Inode table)中。

索引節點指針結構

上面已經解釋過,索引節點只存儲元數據信息,其中包括真正的數據存儲的區塊的信息。下面就來解釋一下索引節點指針結構。
如這篇維基網路上面的文章解釋的那樣,這個結構可能會有 11 到 13 個指針,但大多數文件系統會以 15 個指針的形式來存儲數據結構。這 15 個指針包括:

直接指向文件數據區塊的 12 個指針,稱為直接指針(direct pointer)。
一個單獨非直接指針(singly indirect pointer),指向一個由多個指針構成的區塊,後者的指針又指向文件數據區塊。
一個雙重非直接指針(doubly indirect pointer),指向一個由多個指針構成的區塊,後者的指針又指向一個由多個指針構成的區塊,這一區塊的指針又指向文件數據的區塊。
一個三重非直接指針(triply indirect pointer),指向一個由多個指針構成的區塊,後者的指針又指向一個由多個指針構成的區塊,其指針又指向另一個由多個指針構成的區塊,這一區塊的指針又指向文件數據的區塊。

熱點內容
淘寶為什麼價格降低了 發布:2025-05-15 17:33:17 瀏覽:369
為什麼要選用待測液顏色的互補色光作為光源 發布:2025-05-15 17:13:04 瀏覽:662
為什麼用馬克筆畫的畫得不好看 發布:2025-05-15 17:12:58 瀏覽:335
手機存儲電話不顯示為什麼 發布:2025-05-15 16:54:38 瀏覽:128
為什麼主播看彈幕只看不好的 發布:2025-05-15 16:45:09 瀏覽:47
為什麼男生不能去逛街 發布:2025-05-15 15:57:09 瀏覽:112
為什麼拼多多的皮衣比淘寶便宜 發布:2025-05-15 15:57:05 瀏覽:822
老師為什麼打孩子原因 發布:2025-05-15 15:14:07 瀏覽:274
美甲幫買東西退款為什麼那麼久 發布:2025-05-15 15:11:52 瀏覽:176
為什麼淘寶上洗發水那麼貴 發布:2025-05-15 14:55:15 瀏覽:16