全文索引 vs 一般索引差異比較
| 特性 | 一般索引 | 全文索引 |
| 建立方式 | CREATE INDEX 或條件約束 | 系統預存程序 (sp_fulltext_*) |
| 刪除方式 | DROP INDEX | 系統預存程序 |
| 更新機制 | 資料異動自動更新 | 排程填入或手動執行預存程序 |
| 每張表數量 | 可多個 | 僅一個 |
| 群組管理 | 不可群組 | 多個全文索引可組成一個全文目錄 |
| 儲存位置 | 資料庫檔案內 | 檔案系統 (FTDATA 目錄) |
建立全文索引六步驟
- 啟用資料庫全文功能:
EXEC sp_fulltext_database 'enable'
- 建立全文目錄:
EXEC sp_fulltext_catalog 'FT_pubs', 'create'
- 註冊需全文索引的資料表:
EXEC sp_fulltext_table 'titles', 'create', 'FT_pubs', 'UPKCL_titleidind'
(第四參數為該表唯一索引名稱,通常是 PK)
- 指定參與全文索引的欄位:
EXEC sp_fulltext_column 'titles', 'title', 'add' / EXEC sp_fulltext_column 'titles', 'notes', 'add'
- 啟用資料表全文索引:
EXEC sp_fulltext_table 'titles', 'activate'
- 填入全文索引:
EXEC sp_fulltext_catalog 'FT_pubs', 'start_full' (完整填入) 或 'start_incremental' (增量填入)
完整範例腳本
USE pubs;
GO
IF (SELECT DATABASEPROPERTY('pubs','IsFulltextEnabled')) = 0
EXEC sp_fulltext_database 'enable';
EXEC sp_fulltext_catalog 'FT_pubs', 'create';
EXEC sp_fulltext_table 'titles', 'create', 'FT_pubs', 'UPKCL_titleidind';
EXEC sp_fulltext_table 'titles', 'activate';
EXEC sp_fulltext_column 'titles', 'title', 'add';
EXEC sp_fulltext_column 'titles', 'notes', 'add';
EXEC sp_fulltext_catalog 'FT_pubs', 'start_full';
重要提醒
- 執行前確認 Microsoft Search 服務已啟動。
- 全文索引不支援
text/image 欄位直接建立,需透過上述流程。
- 填入過程資源消耗大,建議離峰時段執行。