首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Microsoft SQL Server 2000 新特性深度解析(五):索引增強——計算列與視圖索引、並行建索引

     編輯:關於SqlServer

索引新特性總覽

SQL Server 2000 索引無 R-Tree/Bitmap 等革命性結構,但有兩大實用增強:

  1. 視圖索引(前文已述)
  2. 計算列索引(Computed Columns)

計算列索引:原理與限制

什麼是計算列?

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 後跟運算表達式,值由引擎自動衍生。

可索引條件(必須滿足所有)

  • 表達式確定性:相同輸入必產生相同輸出(排除 GETDATE()、RAND() 等非確定函數)
  • 無聚合函數:AVG、SUM 等涉及全表運算禁用
  • 引用列限於本表
  • ANSI_NULLS、QUOTED_IDENTIFIER 等 Session 選項固定

不可索引函數清單(部分)

@@ERROR, @@IDENTITY, @@ROWCOUNT, @@TRANCOUNT,
APP_NAME, CURRENT_TIMESTAMP, CURRENT_USER, DATENAME,
FORMATMESSAGE, GETANSINULL, GETDATE, GETUTCDATE,
HOST_ID, HOST_NAME, IDENT_INCR, IDENT_SEED, IDENTITY,
NEWID, PERMISSIONS, ...

並行建索引:多 CPU 機器的效能倍增器

多 CPU 環境下建索引採用並行多線程掃描排序:

  1. 服務器快速隨機掃描表
  2. 按並行度分割數據塊
  3. 各線程用過濾器查詢基表,獨立建立索引結構
  4. 歸併各線程索引片段

技術細節雖深但應用透明,多 CPU/叢集環境下大表建索引效能顯著提升。

展望

下期專題:全文檢索。SQL 2000 對多 CPU/叢集優化處處可見,實戰中將逐步發現更多驚喜。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved