當前位置:首頁 » 編程語言 » 互動式sql索引
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

互動式sql索引

發布時間: 2023-03-05 22:46:58

1. sql查詢語句是什麼

SQL 一詞實際上是 "Structured Query Language" 結構式查詢語言的縮寫,是用於對存放在計算機資料庫中的數據進行組織、管理和檢索的一種工具;是一種特定類型的資料庫 -- 關系資料庫。而控制這種資料庫的計算機程序就是我們常說的 DBMS-- 資料庫管理系統。譬如:SQL Server、Oracle、Sybase、DB2 等等。當用戶想要檢索資料庫中的數據時,就通過 SQL 語言發出請求,接著 DBMS 對該 SQL 請求進行處理並檢索所要求的數據,最後將其返回給用戶,此過程被稱作為資料庫查詢,這也就是資料庫查詢語言這一名稱的由來。

SQL 並不是象 C、COBOL 和 Fortran 語言那樣的完整的計算機語言。SQL 沒有用於條件測試的 IF 語句,也沒有用於程序分支的 Goto 語句以及循環語句 For 或 Do。確切的講,SQL 是一種資料庫子語言,SQL 語句可以被嵌入到另一種語言中,從而使其具有資料庫存取功能。SQL 也非嚴格的結構式語言,它的句法更接近英語語句,因此易於理解,大多數 SQL 語句都是直述其意,讀起來就象自然語言一樣明了。SQL 還是一種互動式查詢語言,允許用戶直接查詢存儲數據,利用這一交互特性,用戶可以在很短的時間內回答相當復雜的問題,而同樣問題若讓程序員編寫相應的報表程序則可能要用幾個星期甚至更長時間。

2. sql索引分為幾類

聚集索引(CLUSTERED)和非聚集索引(NONCLUSTERED)。

3. SQL試題求救,高分

4.SELECT命令
8.不滿足
17.some
18.to A
19.ALTER TABLE STUDENT add E-mail C(30)
20. group by
21.總編號 借書證號
25.借書證號 where
26.where group order distinct
27.PRIMARY tag REFERENCES
28.CURSOR dbf ARRAY TO FILE ADDITIVE
29.delete
31. 查詢 SELECT命令
32.互動式SQL 嵌入式SQL
34.!=
35.unique

4. 資料庫索引的作用

為什麼要創建索引呢?這是因為,創建索引可以大大提高系統的性能。第一,通過創建唯一性索引,可以保證資料庫表中每一行數據的唯一性。第二,可以大大加快 數據的檢索速度,這也是創建索引的最主要的原因。第三,可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。

也許會有人要問:增加索引有如此多的優點,為什麼不對表中的每一個列創建一個索引呢?這種想法固然有其合理性,然而也有其片面性。雖然,索引有許多優點, 但是,為表中的每一個列都增加索引,是非常不明智的。這是因為,增加索引也有許多不利的一個方面。第一,創建索引和維護索引要耗費時間,這種時間隨著數據 量的增加而增加。第二,索引需要佔物理空間,除了數據表占數據空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。 第三,當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

索引是建立在資料庫表中的某些列的上面。因此,在創建索引的時候,應該仔細考慮在哪些列上可以創建索引,在哪些列上不能創建索引。一般來說,應該在這些列 上創建索引,例如:在經常需要搜索的列上,可以加快搜索的速度;在作為主鍵的列上,強制該列的唯一性和組織表中數據的排列結構;在經常用在連接的列上,這 些列主要是一些外鍵,可以加快連接的速度;在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,其指定的范圍是連續的;在經常需要排序的列上創 建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度。

同樣,對於有些列不應該創建索引。一般來說,不應該創建索引的的這些列具有下列特點:第一,對於那些在查詢中很少使用或者參考的列不應該創建索引。這是因 為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。第二,對於那 些只有很少數據值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行佔了表中數據行的很大比 例,即需要在表中搜索的數據行的比例很大。增加索引,並不能明顯加快檢索速度。第三,對於那些定義為text, image和bit數據類型的列不應該增加索引。這是因為,這些列的數據量要麼相當大,要麼取值很少。第四,當修改性能遠遠大於檢索性能時,不應該創建索 引。這是因為,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因 此,當修改性能遠遠大於檢索性能時,不應該創建索引。

創建索引的方法和索引的特徵
創建索引的方法 51aspx.com
創建索引有多種方法,這些方法包括直接創建索引的方法和間接創建索引的方法。直接創建索引,例如使用CREATE INDEX語句或者使用創建索引向導,間接創建索引,例如在表中定義主鍵約束或者唯一性鍵約束時,同時也創建了索引。雖然,這兩種方法都可以創建索引,但 是,它們創建索引的具體內容是有區別的。
使用CREATE INDEX語句或者使用創建索引向導來創建索引,這是最基本的索引創建方式,並且這種方法最具有柔性,可以定製創建出符合自己需要的索引。在使用這種方式 創建索引時,可以使用許多選項,例如指定數據頁的充滿度、進行排序、整理統計信息等,這樣可以優化索引。使用這種方法,可以指定索引的類型、唯一性和復合 性,也就是說,既可以創建聚簇索引,也可以創建非聚簇索引,既可以在一個列上創建索引,也可以在兩個或者兩個以上的列上創建索引。

通過定義主鍵約束或者唯一性鍵約束,也可以間接創建索引。主鍵約束是一種保持數據完整性的邏輯,它限製表中的記錄有相同的主鍵記錄。在創建主鍵約束時,系 統自動創建了一個唯一性的聚簇索引。雖然,在邏輯上,主鍵約束是一種重要的結構,但是,在物理結構上,與主鍵約束相對應的結構是唯一性的聚簇索引。換句話 說,在物理實現上,不存在主鍵約束,而只存在唯一性的聚簇索引。同樣,在創建唯一性鍵約束時,也同時創建了索引,這種索引則是唯一性的非聚簇索引。因此, 當使用約束創建索引時,索引的類型和特徵基本上都已經確定了,由用戶定製的餘地比較小。

當在表上定義主鍵或者唯一性鍵約束時,如果表中已經有了使用CREATE INDEX語句創建的標准索引時,那麼主鍵約束或者唯一性鍵約束創建的索引覆蓋以前創建的標准索引。也就是說,主鍵約束或者唯一性鍵約束創建的索引的優先 級高於使用CREATE INDEX語句創建的索引。

索引的特徵
索引有兩個特徵,即唯一性索引和復合索引。
唯一性索引保證在索引列中的全部數據是唯一的,不會包含冗餘數據。如果表中已經有一個主鍵約束或者唯一性鍵約束,那麼當創建表或者修改表時,SQL Server自動創建一個唯一性索引。然而,如果必須保證唯一性,那麼應該創建主鍵約束或者唯一性鍵約束,而不是創建一個唯一性索引。當創建唯一性索引 時,應該認真考慮這些規則:當在表中創建主鍵約束或者唯一性鍵約束時,SQL Server自動創建一個唯一性索引;如果表中已經包含有數據,那麼當創建索引時,SQL Server檢查表中已有數據的冗餘性;每當使用插入語句插入數據或者使用修改語句修改數據時,SQL Server檢查數據的冗餘性:如果有冗餘值,那麼SQL Server取消該語句的執行,並且返回一個錯誤消息;確保表中的每一行數據都有一個唯一值,這樣可以確保每一個實體都可以唯一確認;只能在可以保證實體 完整性的列上創建唯一性索引,例如,不能在人事表中的姓名列上創建唯一性索引,因為人們可以有相同的姓名。

復合索引就是一個索引創建在兩個列或者多個列上。在搜索時,當兩個或者多個列作為一個關鍵值時,最好在這些列上創建復合索引。當創建復合索引時,應該考慮 這些規則:最多可以把16個列合並成一個單獨的復合索引,構成復合索引的列的總長度不能超過900位元組,也就是說復合列的長度不能太長;在復合索引中,所 有的列必須來自同一個表中,不能跨表建立復合列;在復合索引中,列的排列順序是非常重要的,因此要認真排列列的順序,原則上,應該首先定義最唯一的列,例 如在(COL1,COL2)上的索引與在(COL2,COL1)上的索引是不相同的,因為兩個索引的列的順序不同;為了使查詢優化器使用復合索引,查詢語 句中的WHERE子句必須參考復合索引中第一個列;當表中有多個關鍵列時,復合索引是非常有用的;使用復合索引可以提高查詢性能,減少在一個表中所創建的 索引數量。

索引的類型
根據索引的順序與數據表的物理順序是否相同,可以把索引分成兩種類型。一種是數據表的物理順序與索引順序相同的聚簇索引,另一種是數據表的物理順序與索引順序不相同的非聚簇索引。

聚簇索引的體系結構
索引的結構類似於樹狀結構,樹的頂部稱為葉級,樹的其它部分稱為非葉級,樹的根部在非葉級中。同樣,在聚簇索引中,聚簇索引的葉級和非葉級構成了一個樹狀 結構,索引的最低級是葉級。在聚簇索引中,表中的數據所在的數據頁是葉級,在葉級之上的索引頁是非葉級,索引數據所在的索引頁是非葉級。在聚簇索引中,數 據值的順序總是按照升序排列。

應該在表中經常搜索的列或者按照順序訪問的列上創建聚簇索引。當創建聚簇索引時,應該考慮這些因素:每一個表只能有一個聚簇索引,因為表中數據的物理順序 只能有一個;表中行的物理順序和索引中行的物理順序是相同的,在創建任何非聚簇索引之前創建聚簇索引,這是因為聚簇索引改變了表中行的物理順序,數據行按 照一定的順序排列,並且自動維護這個順序;關鍵值的唯一性要麼使用UNIQUE關鍵字明確維護,要麼由一個內部的唯一標識符明確維護,這些唯一性標識符是 系統自己使用的,用戶不能訪問;聚簇索引的平均大小大約是數據表的百分之五,但是,實際的聚簇索引的大小常常根據索引列的大小變化而變化;在索引的創建過 程中,SQL Server臨時使用當前資料庫的磁碟空間,當創建聚簇索引時,需要1.2倍的表空間的大小,因此,一定要保證有足夠的空間來創建聚簇索引。

當系統訪問表中的數據時,首先確定在相應的列上是否存在有索引和該索引是否對要檢索的數據有意義。如果索引存在並且該索引非常有意義,那麼系統使用該索引 訪問表中的記錄。系統從索引開始瀏覽到數據,索引瀏覽則從樹狀索引的根部開始。從根部開始,搜索值與每一個關鍵值相比較,確定搜索值是否大於或者等於關鍵 值。這一步重復進行,直到碰上一個比搜索值大的關鍵值,或者該搜索值大於或者等於索引頁上所有的關鍵值為止。

非聚簇索引的體系結構
非聚簇索引的結構也是樹狀結構,與聚簇索引的結構非常類似,但是也有明顯的不同。
在非聚簇索引中,葉級僅包含關鍵值,而沒有包含數據行。非聚簇索引表示行的邏輯順序。 非聚簇索引有兩種體系結構:一種體系結構是在沒有聚簇索引的表上創建非聚簇索引,另一種體系結構是在有聚簇索引的表上創建非聚簇索引。

如果一個數據表中沒有聚簇索引,那麼這個數據表也稱為數據堆。當非聚簇索引在數據堆的頂部創建時,系統使用索引頁中的行標識符指向數據頁中的記錄。行標識 符存儲了數據所在位置的信息。數據堆是通過使用索引分配圖(IAM)頁來維護的。IAM頁包含了數據堆所在簇的存儲信息。在系統表sysindexes 中,有一個指針指向了與數據堆相關的第一個IAM頁。系統使用IAM頁在數據堆中瀏覽和尋找可以插入新的記錄行的空間。這些數據頁和在這些數據頁中的記錄 沒有任何的順序並且也沒有鏈接在一起。在這些數據頁之間的唯一的連接是IAM中記錄的順序。當在數據堆上創建了非聚簇索引時,葉級中包含了指向數據頁的行 標識符。行標識符指定記錄行的邏輯順序,由文件ID、頁號和行ID組成。這些行的標識符維持唯一性。非聚簇索引的葉級頁的順序不同於表中數據的物理順序。 這些關鍵值在葉級中以升序維持。

當非聚簇索引創建在有聚簇索引的表上的時候,系統使用索引頁中的指向聚簇索引的聚簇鍵。聚簇鍵存儲了數據的位置信息。如果某一個表有聚簇索引,那麼非聚簇 索引的葉級包含了映射到聚簇鍵的聚簇鍵值,而不是映射到物理的行標識符。當系統訪問有非聚簇索引的表中數據時,並且這種非聚簇索引創建在聚簇索引上,那麼 它首先從非聚簇索引來找到指向聚簇索引的指針,然後通過使用聚簇索引來找到數據。
當需要以多種方式檢索數據時,非聚簇索引是非常有用的。當創建非聚簇索引時,要考慮這些情況:在預設情況下,所創建的索引是非聚簇索引;在每一個表上面,可以創建不多於249個非聚簇索引,而聚簇索引最多隻能有一個。
系統如何訪問表中的數據
一般地,系統訪問資料庫中的數據,可以使用兩種方法:表掃描和索引查找。第一種方法是表掃描,就是指系統將指針放置在該表的表頭數據所在的數據頁上,然後 按照數據頁的排列順序,一頁一頁地從前向後掃描該表數據所佔有的全部數據頁,直至掃描完表中的全部記錄。在掃描時,如果找到符合查詢條件的記錄,那麼就將 這條記錄挑選出來。最後,將全部挑選出來符合查詢語句條件的記錄顯示出來。第二種方法是使用索引查找。索引是一種樹狀結構,其中存儲了關鍵字和指向包含關 鍵字所在記錄的數據頁的指針。當使用索引查找時,系統沿著索引的樹狀結構,根據索引中關鍵字和指針,找到符合查詢條件的的記錄。最後,將全部查找到的符合 查詢語句條件的記錄顯示出來。
在SQL Server中,當訪問資料庫中的數據時,由SQL Server確定該表中是否有索引存在。如果沒有索引,那麼SQL Server使用表掃描的方法訪問資料庫中的數據。查詢處理器根據分布的統計信息生成該查詢語句的優化執行規劃,以提高訪問數據的效率為目標,確定是使用 表掃描還是使用索引。
索引的選項
在創建索引時,可以指定一些選項,通過使用這些選項,可以優化索引的性能。這些選項包括FILLFACTOR選項、PAD_INDEX選項和SORTED_DATA_REORG選項。
使用FILLFACTOR選項,可以優化插入語句和修改語句的性能。當某個索引頁變滿時,SQL Server必須花費時間分解該頁,以便為新的記錄行騰出空間。使用FILLFACTOR選項,就是在葉級索引頁上分配一定百分比的自由空間,以便減少頁 的分解時間。當在有數據的表中創建索引時,可以使用FILLFACTOR選項指定每一個葉級索引節點的填充的百分比。預設值是0,該數值等價於100。在 創建索引的時候,內部索引節點總是留有了一定的空間,這個空間足夠容納一個或者兩個表中的記錄。在沒有數據的表中,當創建索引的時候,不要使用該選項,因 為這時該選項是沒有實際意義的。另外,該選項的數值在創建時指定以後,不能動態地得到維護,因此,只應該在有數據的表中創建索引時才使用。
PAD_INDEX選項將FILLFACTOR選項的數值同樣也用於內部的索引節點,使內部的索引節點的填充度與葉級索引的節點中的填充度相同。如果沒有 指定FILLFACTOR選項,那麼單獨指定PAD_INDEX選項是沒有實際意義的,這是因為PAD_INDEX選項的取值是由FILLFACTOR選 項的取值確定的。
當創建聚簇索引時,SORTED_DATA_REORG選項清除排序,因此可以減少建立聚簇索引所需要的時間。當在一個已經變成碎塊的表上創建或者重建聚 簇索引時,使用SORTED_DATA_REORG選項可以壓縮數據頁。當重新需要在索引上應用填充度時,也使用該選項。當使用 SORTED_DATA_REORG選項時,應該考慮這些因素:SQL Server確認每一個關鍵值是否比前一個關鍵值高,如果都不高,那麼不能創建索引;SQL Server要求1.2倍的表空間來物理地重新組織數據;使用SORTED_DATA_REORG選項,通過清除排序進程而加快索引創建進程;從表中物理 地拷貝數據;當某一個行被刪除時,其所佔的空間可以重新利用;創建全部非聚簇索引;如果希望把葉級頁填充到一定的百分比,可以同時使用 FILLFACTOR選項和SORTED_DATA_REORG選項。
索引的維護
為了維護系統性能,索引在創建之後,由於頻繁地對數據進行增加、刪除、修改等操作使得索引頁發生碎塊,因此,必須對索引進行維護。
使用DBCC SHOWCONTIG語句,可以顯示表的數據和索引的碎塊信息。當執行DBCC SHOWCONTIG語句時,SQL Server瀏覽葉級上的整個索引頁,來確定表或者指定的索引是否嚴重碎塊。DBCC SHOWCONTIG語句還能確定數據頁和索引頁是否已經滿了。當對表進行大量的修改或者增加大量的數據之後,或者表的查詢非常慢時,應該在這些表上執行 DBCC SHOWCONTIG語句。當執行DBCC SHOWCONTIG語句時,應該考慮這些因素:當執行DBCC SHOWCONTIG語句時,SQL Server要求指定表的ID號或者索引的ID號,表的ID號或者索引的ID號可以從系統表sysindexes中得到;應該確定多長時間使用一次 DBCC SHOWCONTIG語句,這個時間長度要根據表的活動情況來定,每天、每周或者每月都可以。
使用DBCC DBREINDEX語句重建表的一個或者多個索引。當希望重建索引和當表上有主鍵約束或者唯一性鍵約束時,執行DBCC DBREINDEX語句。除此之外,執行DBCC DBREINDEX語句還可以重新組織葉級索引頁的存儲空間、刪除碎塊和重新計算索引統計。當使用執行DBCC DBREINDEX語句時,應該考慮這些因素:根據指定的填充度,系統重新填充每一個葉級頁;使用DBCC DBREINDEX語句重建主鍵約束或者唯一性鍵約束的索引;使用SORTED_DATA_REORG選項可以更快地創建聚簇索引,如果沒有排列關鍵值, 那麼不能使用DBCC DBREINDEX語句;DBCC DBREINDEX語句不支持系統表。另外,還可以使用資料庫維護規劃向導自動地進行重建索引的進程。
統計信息是存儲在SQL Server中的列數據的樣本。這些數據一般地用於索引列,但是還可以為非索引列創建統計。SQL Server維護某一個索引關鍵值的分布統計信息,並且使用這些統計信息來確定在查詢進程中哪一個索引是有用的。查詢的優化依賴於這些統計信息的分布准確 度。查詢優化器使用這些數據樣本來決定是使用表掃描還是使用索引。當表中數據發生變化時,SQL Server周期性地自動修改統計信息。索引統計被自動地修改,索引中的關鍵值顯著變化。統計信息修改的頻率由索引中的數據量和數據改變數確定。例如,如 果表中有10000行數據,1000行數據修改了,那麼統計信息可能需要修改。然而,如果只有50行記錄修改了,那麼仍然保持當前的統計信息。除了系統自 動修改之外,用戶還可以通過執行UPDATE STATISTICS語句或者sp_updatestats系統存儲過程來手工修改統計信息。使用UPDATE STATISTICS語句既可以修改表中的全部索引,也可以修改指定的索引。
使用SHOWPLAN和STATISTICS IO語句可以分析索引和查詢性能。使用這些語句可以更好地調整查詢和索引。SHOWPLAN語句顯示在連接表中使用的查詢優化器的每一步以及表明使用哪一 個索引訪問數據。使用SHOWPLAN語句可以查看指定查詢的查詢規劃。當使用SHOWPLAN語句時,應該考慮這些因素。SET SHOWPLAN_ALL語句返回的輸出結果比SET SHOWPLAN_TEXT語句返回的輸出結果詳細。然而,應用程序必須能夠處理SET SHOWPLAN_ALL語句返回的輸出結果。SHOWPLAN語句生成的信息只能針對一個會話。如果重新連接SQL Server,那麼必須重新執行SHOWPLAN語句。STATISTICS IO語句表明輸入輸出的數量,這些輸入輸出用來返回結果集和顯示指定查詢的邏輯的和物理的I/O的信息。可以使用這些信息來確定是否應該重寫查詢語句或者 重新設計索引。使用STATISTICS IO語句可以查看用來處理指定查詢的I/O信息。
就象SHOWPLAN語句一樣,優化器隱藏也用來調整查詢性能。優化器隱藏可以對查詢性能提供較小的改進,並且如果索引策略發生了改變,那麼這種優化器隱 藏就毫無用處了。因此,限制使用優化器隱藏,這是因為優化器隱藏更有效率和更有柔性。當使用優化器隱藏時,考慮這些規則:指定索引名稱、當 index_id為0時為使用表掃描、當index_id為1時為使用聚簇索引;優化器隱藏覆蓋查詢優化器,如果數據或者環境發生了變化,那麼必須修改優 化器隱藏。
索引調整向導
索引調整向導是一種工具,可以分析一系列資料庫的查詢語句,提供使用一系列資料庫索引的建議,優化整個查詢語句的性能。對於查詢語句,需要指定下列內容:
查詢語句,這是將要優化的工作量
包含了這些表的資料庫,在這些表中,可以創建索引,提高查詢性能
在分析中使用的表
在分析中,考慮的約束條件,例如索引可以使用的最大磁碟空間
這里指的工作量,可以來自兩個方面:使用SQL Server捕捉的軌跡和包含了SQL語句的文件。索引調整向導總是基於一個已經定義好的工作量。如果一個工作量不能反映正常的操作,那麼它建議使用的索 引不是實際的工作量上性能最好的索引。索引調整向導調用查詢分析器,使用所有可能的組合評定在這個工作量中每一個查詢語句的性能。然後,建議在整個工作量 上可以提高整個查詢語句的性能的索引。如果沒有供索引調整向導來分析的工作量,那麼可以使用圖解器立即創建它。一旦決定跟蹤一條正常資料庫活動的描述樣 本,向導能夠分析這種工作量和推薦能夠提高資料庫工作性能的索引配置。
索引調整向導對工作量進行分析之後,可以查看到一系列的報告,還可以使該向導立即創建所建議的最佳索引,或者使這項工作成為一種可以調度的作業,或者生成一個包含創建這些索引的SQL語句的文件。
索引調整向導允許為SQL Server資料庫選擇和創建一種理想的索引組合和統計,而不要求對資料庫結構、工作量或者SQL Server內部達到專家的理解程度。總之,索引調整向導能夠作到以下幾個方面的工作:
通過使用查詢優化器來分析工作量中的查詢任務,向有大量工作量的資料庫推薦一種最佳的索引混合方式
分析按照建議作出改變之後的效果,包括索引的用法、表間查詢的分布和大量工作中查詢的工作效果
為少量查詢任務推薦調整資料庫的方法
通過設定高級選項如磁碟空間約束、最大的查詢語句數量和每個索引的最多列的數量等,允許定製推薦方式
圖解器
圖解器能夠實時抓取在伺服器中運行的連續圖片,可以選取希望監測的項目和事件,包括Transact-SQL語句和批命令、對象的用法、鎖定、安全事件和 錯誤。圖解器能夠過濾這些事件,僅僅顯示用戶關心的問題。可以使用同一台伺服器或者其他伺服器重復已經記錄的跟蹤事件,重新執行那些已經作了記錄的命令。 通過集中處理這些事件,就能夠很容易監測和調試SQL Server中出現的問題。通過對特定事件的研究,監測和調試SQL Server問題變得簡單多了。
查詢處理器
查詢處理器是一種可以完成許多工作的多用途的工具。在查詢處理器中,可以互動式地輸入和執行各種Transact-SQL語句,並且在一個窗口中可以同時 查看Transact-SQL語句和其結果集;可以在查詢處理器中同時執行多個Transact-SQL語句,也可以執行腳本文件中的部分語句;提供了一 種圖形化分析查詢語句執行規劃的方法,可以報告由查詢處理器選擇的數據檢索方法,並且可以根據查詢規劃調整查詢語句的執行,提出執行可以提高性能的優化索 引建議,這種建議只是針對一條查詢語句的索引建議,只能提高這一條查詢語句的查詢性能。
系統為每一個索引創建一個分布頁,統計信息就是指存儲在分布頁上的某一個表中的一個或者多個索引的關鍵值的分布信息。當執行查詢語句時,為了提高查詢速度 和性能,系統可以使用這些分布信息來確定使用表的哪一個索引。查詢處理器就是依賴於這些分布的統計信息,來生成查詢語句的執行規劃。執行規劃的優化程度依 賴於這些分布統計信息的准確步驟的高低程度。如果這些分布的統計信息與索引的物理信息非常一致,那麼查詢處理器可以生成優化程度很高的執行規劃。相反,如 果這些統計信息與索引的實際存儲的信息相差比較大,那麼查詢處理器生成的執行規劃的優化程度則比較低。
查詢處理器從統計信息中提取索引關鍵字的分布信息,除了用戶可以手工執行UPDATE STATISTICS之外,查詢處理器還可以自動收集統計這些分布信息。這樣,就能夠充分保證查詢處理器使用最新的統計信息,保證執行規劃具有很高的優化 程度,減少了維護的需要。當然,使用查詢處理器生成的執行規劃,也有一些限制。例如,使用執行規劃只能提高單個查詢語句的性能,但是可能對整個系統的性能 產生正面的或者付面的影響,因此,要想提高整個系統的查詢性能,應該使用索引調整向導這樣的工具。
結論
在以前的SQL Server版本中,在一個查詢語句中,一個表上最多使用一個索引。而在SQL Server 7.0中,索引操作得到了增強。SQL Server現在使用索引插入和索引聯合演算法來實現在一個查詢語句中的可以使用多個索引。共享的行標識符用於連接同一個表上的兩個索引。如果某個表中有一 個聚簇索引,因此有一個聚簇鍵,那麼該表上的全部非聚簇索引的葉節點使用該聚簇鍵作為行定位器,而不是使用物理記錄標識符。如果表中沒有聚簇索引,那麼非 聚簇索引繼續使用物理記錄標識符指向數據頁。在上面的兩種情況中,行定位器是非常穩定的。當聚簇索引的葉節點分開時,由於行定位器是有效的,所以非聚簇索 引不需要被修改。如果表中沒有聚簇索引,那麼頁的分開就不會發生。而在以前的版本中,非聚簇索引使用物理記錄標識符如頁號和行號,作為行的定位器。例如, 如果聚簇索引(數據頁)發生分解時,許多記錄行被移動到了一個新的數據頁,因此有了多個新的物理記錄標識符。那麼,所有的非聚簇索引都必須使用這些新的物 理記錄標識符進行修改,這樣就需要耗費大量的時間和資源。
索引調整向導無論對熟練用戶還是新用戶,都是一個很好的工具。熟練用戶可以使用該向導創建一個基本的索引配置,然後在基本的索引配置上面進行調整和定製。新用戶可以使用該向導快速地創建優化的索引。
參考:

5. 關於軟考中資料庫系統工程師

資料庫系統工程師級考試大綱
一、考試說明
1.考試要求
(1)掌握計算機體系結構以及各主要部件的性能和基本工作原理;
(2)掌握操作系統、程序設計語言的基礎知識,了解編譯程序的基本知識;
(3)熟練掌握常用數據結構和常用演算法;
(4)熟悉軟體工程和軟體開發項目管理的基礎知識;
(5)熟悉計算機網路的原理和技術;
(6)掌握資料庫原理及基本理論;
(7)掌握常用的大型資料庫管理系統的應用技術;
(8)掌握資料庫應用系統的設計方法和開發過程;
(9)熟悉資料庫系統的管理和維護方法,了解相關的安全技術;
(10)了解資料庫發展趨勢與新技術;
(11)掌握常用信息技術標准、安全性,以及有關法律、法規的基本知識;
(12)了解信息化、計算機應用的基礎知識;
(13)正確閱讀和理解計算機領域的英文資料。
2. 通過本考試的合格人員能參與應用信息系統的規劃、設計、構建、運行和管理,能按照用戶需求,設計、建立、運行、維護高質量的資料庫和數據倉庫;作為數據管理員管理信息系統中的數據資源,作為資料庫管理員建立和維護核心資料庫;擔任資料庫系統有關的技術支持,同時具備一定的網路結構設計及組網能力;具有工程師的實際工作能力和業務水平,能指導計算機技術與軟體專業助理工程師(或技術員)工作。
3. 本考試設置的科目包括
(1)信息系統知識,考試時間為150分鍾,筆試;
(2)資料庫系統設計與管理,考試時間為150分鍾,筆試。
二、考試范圍
考試科目1:信息系統知識
1. 計算機系統知識
1.1 硬體知識
1.1.1 計算機體系結構和主要部件的基本工作原理
•CPU和存儲器的組成、性能、基本工作原理
•常用I/O設備、通信設備的性能,以及基本工作原理
•I/O介面的功能、類型和特點
•CISC/RISC,流水線操作,多處理機,並行處理
1.1.2 存儲系統
•虛擬存儲器基本工作原理,多級存儲體系
•RAID類型和特性
1.1.3 安全性、可靠性與系統性能評測基礎知識
•診斷與容錯
•系統可靠性分析評價
• 計算機系統性能評測方法
1.2 數據結構與演算法
1.2.1 常用數據結構
•數組(靜態數組、動態數組)
•線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)
•棧和隊列
•樹(二叉樹、查找樹、平衡樹、遍歷樹、堆)、圖、集合的定義、存儲和操作
•Hash(存儲位置計算、碰撞處理)
1.2.2 常用演算法
•排序演算法、查找演算法、數值計算、字元串處理、數據壓縮演算法、遞歸演算法、圖的相關演算法
•演算法與數據結構的關系,演算法效率,演算法設計,演算法描述(流程圖、偽代碼、決策表),演算法的復雜性
1.3 軟體知識
1.3.1 操作系統知識
•操作系統的類型、特徵、地位、內核(中斷控制)、進程、線程概念
•處理機管理(狀態轉換、同步與互斥、信號燈、分時輪轉、搶占、死鎖)
•存儲管理(主存保護、動態連接分配、分段、分頁、虛存)
•設備管理(I/O控制、假離線、磁碟調度)
•文件管理(文件目錄、文件的結構和組織、存取方法、存取控制、恢復處理、共享和安全)
•作業管理(作業調度、作業控制語言(JCL)、多道程序設計)
•漢字處理,多媒體處理,人機界面
•網路操作系統和嵌入式操作系統基礎知識
•操作系統的配置
1.3.2 程序設計語言和語言處理程序的知識
• 匯編、編譯、解釋系統的基礎知識和基本工作原理
• 程序設計語言的基本成分:數據、運算、控制和傳輸,程序調用的實現機制
• 各類程序設計語言的主要特點和適用情況
1.4 計算機網路知識
•網路體系結構(網路拓撲、OSI/RM、基本的網路協議)
•傳輸介質,傳輸技術,傳輸方法,傳輸控制
•常用網路設備和各類通信設備
•Client/Server結構、Browser/Server結構、Browser/Web/Datebase結構
•LAN拓撲,存取控制,LAN的組網,LAN間連接,LAN-WAN連接
•網際網路基礎知識及應用
•網路軟體
•網路管理
•網路性能分析
•網路有關的法律、法規
2. 資料庫技術
2.1 資料庫技術基礎
2.1.1 資料庫模型
•資料庫系統的三級模式(概念模式、外模式、內模式),兩級映像(概念模式/外模式、外模式/內模式)
•資料庫模型:數據模型的組成要素,概念數據模型ER圖(實體、屬性、關系),邏輯數據模型(關系模型、層次模型、網路模型)
2.1.2 資料庫管理系統的功能和特徵
•主要功能(資料庫定義、資料庫操作、資料庫控制、事務管理、用戶視圖)
•特徵(確保數據獨立性、資料庫存取、同時執行過程、排它控制、故障恢復、安全性、完整性)
•RDB(關系資料庫),OODB(面向對象資料庫),ORDB(對象關系資料庫),NDB(網狀資料庫)
•幾種常用Web資料庫的特點
2.1.3 資料庫系統體系結構
• 集中式資料庫系統
• Client/Server資料庫系統
• 並行資料庫系統
• 分布式資料庫系統
• 對象關系資料庫系統
2.2 數據操作
2.2.1 關系運算
•關系代數運算(並、交、差、笛卡兒積、選擇、投影、連接、除)
•元組演算
•完整性約束
2.2.2 關系資料庫標准語言(SQL)
•SQL的功能與特點
•用SQL進行數據定義(表、視圖、索引、約束)
•用SQL進行數據操作(數據檢索、數據插入/刪除/更新、觸發控制)
•安全性和授權
•程序中的API,嵌入SQL
2.3 資料庫的控制功能
•資料庫事務管理(ACID屬性)
•資料庫備份與恢復技術(UNDO、REDO)
•並發控制
2.4 資料庫設計基礎理論
2.4.1 關系資料庫設計
•函數依賴
•規范化(第一範式、第二範式、第三範式、BC範式、第四範式、第五範式)
•模式分解及分解應遵循的原則
2.4.2 對象關系資料庫設計
•嵌套關系、 復雜類型,繼承與引用類型
•與復雜類型有關的查詢
•SQL中的函數與過程
•對象關系
2.5 數據挖掘和數據倉庫基礎知識
•數據挖掘應用和分類
•關聯規則、聚類
•數據倉庫的成分
•數據倉庫的模式
2.6 多媒體基本知識
2.6.1 多媒體技術基本概念
•多媒體系統基礎知識
•常用多媒體文件格式
2.6.2 多媒體壓縮編碼技術
•多媒體壓縮編碼技術
•統計編碼
•預測編碼
•編碼的國際標准
2.6.3多媒體技術應用
•簡單圖形的繪制,圖像文件的處理方法
•音頻和視頻信息的應用
•多媒體應用開發過程
2.7 系統性能知識
•性能計算(響應時間、吞吐量、周轉時間)
•性能指標和性能設計
•性能測試和性能評估
2.8 計算機應用基礎知識
•信息管理、數據處理、輔助設計、科學計算,人工智慧等基礎知識
•遠程通信服務及相關通信協議基礎知識
3. 系統開發和運行維護知識
3.1 軟體工程、軟體過程改進和軟體開發項目管理知識
•軟體工程知識
•軟體開發生命周期階段目標和任務
•軟體開發項目基礎知識(時間管理、成本管理、質量管理、人力資源管理、風險管理等)及其常用管理工具
•主要的軟體開發方法(生命周期法、原型法、面向對象法、CASE)
•軟體開發工具與環境知識
•軟體質量管理基礎知識
•軟體過程改進基礎知識
•軟體開發過程評估、軟體能力成熟度評估的基礎知識
3.2 系統分析基礎知識
•系統分析的目的和任務
•結構化分析方法(數據流圖(DFD)和數據字典(DD),實體關系圖(ERD),描述加工處理的結構化語言)
•統一建模語言(UML)
•系統規格說明書
3.3 系統設計知識
•系統設計的目的和任務
•結構化設計方法和工具(系統流程圖、HIPO圖、控制流程圖)
•系統總體結構設計(總體布局,設計原則,模塊結構設計,數據存取設計,系統配置方案)
•系統詳細設計(代碼設計、資料庫設計、用戶界面設計、處理過程設計)
•系統設計說明書
3.4 系統實施知識
•系統實施的主要任務
•結構化程序設計、面向對象程序設計、可視化程序設計
•程序設計語言的選擇、程序設計風格
•系統測試的目的、類型,系統測試方法(黑盒測試、白盒測試、灰盒測試)
•測試設計和管理(錯誤曲線、錯誤排除、收斂、注入故障、測試試用例設計、系統測試報告)
•系統轉換基礎知識
3.5 系統運行和維護知識
•系統運行管理知識
•系統維護知識
•系統評價知識
4. 安全性知識
•安全性基本概念(網路安全、操作系統安全、資料庫安全)
•計算機病毒的防治,計算機犯罪的防範,容災
•訪問控制、防闖入、安全管理措施
•加密與解密機制
•風險分析、風險類型、抗風險措施和內部控制
5.標准化知識
•標准化意識,標准化的發展,標准出台過程
•國際標准、國家標准、行業標准、企業標准基本知識
•代碼標准、文件格式標准、安全標准軟體開發規范和文檔標准
•標准化機構
6.信息化基礎知識
•信息化意識
•全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略
•有關的法律、法規
•遠程教育、電子商務、電子政務等基礎知識
•企業信息資源管理基礎知識
7.計算機專業英語
•掌握計算機技術的基本詞彙
•能正確閱讀和理解計算機領域的英文資料
考試科目2:資料庫系統設計與管理
1.資料庫設計
1.1理解系統需求說明
•了解用戶需求、確定系統范圍
•確定應用系統資料庫的各種關系
•現有環境與新系統環境的關系
•新系統中的數據項、數據字典、數據流
1.2 系統開發的准備
•選擇開發方法,准備開發環境,制訂開發計劃
1.3 設計系統功能
•選擇系統機構,設計各子系統的功能和介面,設計安全性策略、需求和實現方法,制定詳細的工作流和數據流
1.4 資料庫設計
1.4.1 設計數據模型
•概念結構設計(設計ER模型)
•邏輯結構設計(轉換成DBMS所能接收的數據模型)
•評審設計
1.4.2 物理結構設計
•設計方法與內容
•存取方法的選擇
•評審設計與性能預測
1.4.3 資料庫實施與維護
•數據載入與應用程序調試
•資料庫試運行
•資料庫運行與維護
1.4.4 資料庫的保護
•資料庫的備份與恢復
•資料庫的安全性
•資料庫的完整性
•資料庫的並發控制
1.5 編寫外部設計文檔
•編寫系統說明書(系統配置圖、各子系統關系圖、系統流程圖,系統功能說明、輸入輸出規格說明、數據規格說明、用戶手冊框架)
•設計系統測試要求
1.6 設計評審
2. 資料庫應用系統設計
2.1 設計資料庫應用系統結構
•信息系統的架構(如Client/Server)與DBMS
•多用戶資料庫環境(文件伺服器體系結構、Client/Server體系結構)
•大規模資料庫和並行計算機體系結構(SMP、MPP)
•中間件角色和相關工具
•按構件分解,確定構件功能規格以及構件之間的介面
2.2 設計輸入輸出
•屏幕界面設計,設計輸入輸出檢查方法和檢查信息
•資料庫交互與連接(掌握C程序設計語言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一種開發工具與資料庫互連的方法(如何與資料庫伺服器溝通))
2.3 設計物理數據
•分析事務在資料庫上運行的頻率和性能要求,確定邏輯數據組織方式、存儲介質,設計索引結構和處理方式
•將邏輯數據結構變換成物理數據結構,計算容量(空間代價),確定存取方法(時間效率)、系統配置(維護代價)並進行優化
2.4 設計安全體系
•明確安全等級
•資料庫的登錄方式
•資料庫訪問
•許可(對象許可、命令許可、授權許可的方法)
2.5 應用程序開發
2.5.1 應用程序開發
•選擇應用程序開發平台
•系統實施順序
•框架開發
•基礎小組的程序開發
•源代碼控制
•版本控制
2.5.2 模塊劃分(原則、方法、標准)
2.5.3 編寫程序設計文檔
•模塊規格說明書(功能和介面說明、程序處理邏輯的描述、輸入輸出數據格式的描述)
•測試要求說明書(測試類型和目標,測試用例,測試方法)
2.5.4 程序設計評審
2.6 編寫應用系統設計文檔
•系統配置說明、構件劃分圖、構件間的介面、構件處理說明、屏幕設計文檔、報表設計文檔、程序設計文檔、文件設計文檔、資料庫設計文檔
2.7 設計評審
3. 資料庫應用系統實施
3.1 整個系統的配置與管理
3.2 常用資料庫管理系統的應用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)
•創建資料庫
•創建表、創建索引、創建視圖、創建約束、創建UDDT(用戶自定義類型)
•創建和管理觸發器
•建立安全體系
3.3 資料庫應用系統安裝
•擬定系統安裝計劃(考慮費用、客戶關系、雇員關系、後勤關系和風險等因素)
•擬定人力資源使用計劃(組織機構安排的合理性)
•直接安裝(安裝新系統並使系統快速進入運行狀態)
•並行安裝(新舊系統並行運行一段時間)
•階段安裝(經過一系列的步驟和階段使新系統各部分逐步投入運行)
3.4 資料庫應用系統測試
•擬定測試目標、計劃、方法與步驟
•數據載入,准備測試數據
•指導應用程序員進行模塊測試進行驗收
•准備系統集成測試環境測試工具
•寫出資料庫運行測試報告
3.5 培訓與用戶支持
4.資料庫系統的運行和管理
4.1 資料庫系統的運行計劃
•運行策略的確定
•確定資料庫系統報警對象和報警方式
•資料庫系統的管理計劃(執行,故障/恢復,安全性,完整性,用戶培訓和維護)
4.2 資料庫系統的運行和維護
•新舊系統的轉換
•收集和分析報警數據(執行報警、故障報警、安全報警)
•連續穩定的運行
•資料庫維護(資料庫重構、安全視圖的評價和驗證、文檔維護)
•資料庫系統的運行統計(收集、分析、提出改進措施)
•關於運行標准和標准改進一致性的建議
•資料庫系統的審計
4.3 資料庫管理
•數據字典和數據倉庫的管理
•數據完整性維護和管理(實體完整性、參照完整性)
•資料庫物理結構的管理(保證數據不推遲訪問)
•資料庫空間及碎片管理
•備份和恢復(順序、日誌(審計痕跡)、檢查點)
•死鎖管理(集中式、分布式)
•並發控制(可串列性、鎖機制、時間戳、優化)
•數據安全性管理(加密、安全、訪問控制、視圖、有效性確認規則)
•資料庫管理員(DBA)職責
4.4 性能調整
•SQL語句的編碼檢驗
•表設計的評價
•索引的改進
•物理分配的改進
•設備增強
•資料庫性能優化
4.5 用戶支持
•用戶培訓
•售後服務
5. SQL
5.1 資料庫語言
•資料庫語言的要素
•資料庫語言的使用方式(互動式和嵌入式)
5.2 SQL概述
•SQL語句的特徵
•SQL語句的基本成分
5.3 資料庫定義
•創建資料庫(Create Datebase)、創建表(Create Table)
•定義數據完整性
•修改表(Alter Table)、刪除表(Drop Table)
•定義索引(Create Index)、刪除索引(Drop Index)
•定義視圖(Create View)、刪除視圖(Drop View)、更新視圖
5.4 數據操作
•Select語句的基本機構
•簡單查詢
•SQL中的選擇、投影
•字元串比較,涉及空值的比較
•日期時間,布爾值,輸出排序
•多表查詢
•避免屬性歧義
•SQL中的連接、並、交、差
•SQL中的元組變數
•子查詢
5.5 完整性控制與安全機制
•主鍵(Primary Key)約束
•外鍵(Foreign Key)約束
•屬性值上的約束(Null、Check、Create Domain)
•全局約束(Create Assertions)
•許可權、授權(Grant)、銷權(Revoke)
5.6 創建觸發器(Create Trigger)
5.7 SQL使用方式
•互動式SQL
•嵌入式SQL
•SQL與宿主語言介面(Declare、共享變數、游標、卷游標)
•動態SQL
•API
5.8 SQL 標准化
6. 網路環境下的資料庫
6.1 分布式資料庫
6.1.1 分布式資料庫的概念
•分布式資料庫的特點與目標
6.1.2 分布式資料庫的體系結構
•分布式資料庫的模式結構
•數據分布的策略(數據分片、分布透明性)
•分布式資料庫管理系統
6.1.3 分布式查詢處理和優化
6.1.4 分布式事務管理
•分布式資料庫的恢復(故障、恢復、2段提交、3段提交)
•分布式資料庫的透明性(局部、分裂、復制、處理、並發、執行)
6.1.5 分布式資料庫系統的應用
6.2 網路環境下資料庫系統的設計與實施
•數據的分布設計
•負載均衡設計
•資料庫互連技術
6.3 面向Web的DBMS技術
•三層體系結構
•動態Web網頁
•ASP、JSP、XML的應用
7.資料庫的安全性
7.1 安全性策略的理解
•資料庫視圖的安全性策略
•數據的安全級別(最重要的、重要的、注意、選擇)
7.2 資料庫安全測量
•用戶訪問控制(採用口令等)
•程序訪問控制(包含在程序中的SQL命令限制)
•表的訪問控制(視圖機制)
•控制訪問的函數和操作
•外部存儲數據的加密與解密
8. 資料庫發展趨勢與新技術
8.1 面向對象資料庫(OODBMS)
8.1.1 OODBMS的特徵
8.1.2 面向對象數據模型
•對象結構、對象類、繼承與多重繼承、對象標識、對象包含、對象嵌套
8.1.3 面向對象資料庫語言
8.1.4 對象關系資料庫系統(ORDBMS)
•嵌套關系
•復雜類型
•繼承、引用類型
•與復雜類型有關的查詢
•函數與過程
•面向對象與對象關系
•ORDBMS應用領域
8.2 企業資源計劃(ERP)和資料庫
8.2.1 ERP概述
•基本MRP(製造資源計劃)、閉環MRP、ERP
•基本原理、發展趨勢
•ERP設計的總體思路(一個中心、兩類業務、三條干線)
8.2.2 ERP與資料庫
•運行資料庫與ERP數據模型之間的關系
•運行資料庫與ERP資料庫之間的關系
8.2.3 案例分析
8.3 決策支持系統的建立
•決策支持系統的概念
•數據倉庫設計
•數據轉移技術
•聯機分析處理(OLAP)技術
•企業決策支持解決方案
•聯機事務處理(OLTP)