server Microsoft SQL Server 2000的索引並沒有太多變化,本來還以為會有R-Tree、Bitmap Index之類的東東出來呢,結果很讓人失
望:(
不過還是有一些變化的,第三講裡面已經說過了可以給View加索引,還有一點就是可以給計算資料行(Computed Columns)加索引。
?不知道什麼是Computed Columns?我倒!
其實這東東我也就用過一次,抄一段Online Book的Sample Code吧
CREATE TABLE t2 (a int, b int, c int, x float,
y as CASE x
WHEN 0 THEN a
WHEN 1 THEN b
ELSE c
END)
CREATE TABLE mytable
(
low int,
high int,
myavg AS (low + high)/2
)
看明白了吧,就是as後面加一個計算值而已,OK, continue
現在雖然可以給計算資料行加索引了,但是還是受到一些限制的,比如說,象avg、sum這樣的和整張表都有關的計算值就不可以加索
引,還有,具有不確定計算值的也不可以加索引,運算式中使用的欄位也必須是這張表中的。
SQL 2000裡面對索引作了一些最佳化,不過具體的細節不是很清楚,我所知道的就是在多CPU的機器上建立索引的時候可以使用平行
多線程來掃描和分類資料。實現的技術細節沒有太多的意思,簡單介紹一下就是,伺服器在建立索引之前對錶做一個快速的隨機掃
描,把資料按照設定的平行度分為幾塊,然後每個線程利用過濾器對基表進行查詢,分別建立索引結構,每個線程都完成之後再把
這些索引串連起來。
SQL 2000中很多地方對多CPU和Clustered Server做了最佳化,可惜現在的資料太少,不過使用一段時間就會慢慢發現的了。
下期預告
全文檢索索引
附錄:
不確定傳回值的函數
@@ERROR
@@IDENTITY
@@ROWCOUNT
@@TRANCOUNT
APP_NAME
CURRENT_TIMESTAMP
CURRENT_USER
DATENAME
FORMATMESSAGE
GETANSINULL
GETDATE
GetUTCDate
HOST_ID
HOST_NAME
IDENT_INCR
IDENT_SEED
IDENTITY
NEWIDPERMISSIONS
SESSION_USER
STATS_DATE
SYSTEM_USER
TEXTPTR
TEXTVALID
USER_NAME