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

SQL Server 全文檢索完整建立與查詢範例

     編輯:關於SqlServer

SQL Server 全文檢索(Full-Text Search)能對大量文字資料進行高效的語意搜尋,遠優於 `LIKE '%關鍵字%'` 的掃描效能。本文以系統預存程序方式,示範從啟用功能到建立目錄、索引、填充及查詢的完整流程。

建立全文檢索的六個步驟

  1. 啟用資料庫全文功能
    `EXEC sp_fulltext_database 'enable';`
  2. 建立全文目錄
    `EXEC sp_fulltext_catalog 'Ask91Fable', 'create', 'D:\Data\2005\Ask_91_Index';`
  3. 註冊需全文索引的資料表(需有唯一索引/主鍵)
    `EXEC sp_fulltext_table 'Asks', 'create', 'Ask91Fable', 'PK_Ask';`
  4. 加入要索引的欄位
    `EXEC sp_fulltext_column 'Asks', 'Subject', 'add';`
    `EXEC sp_fulltext_column 'Asks', 'Detail', 'add';`
  5. 啟用資料表的全文檢索
    `EXEC sp_fulltext_table 'Asks', 'activate';`
  6. 填充全文目錄
    `EXEC sp_fulltext_table 'Asks', 'start_full';`
    `-- EXEC sp_fulltext_table 'Asks', 'start_incremental';`

查詢效能對比:LIKE vs CONTAINS

測試資料 100 萬筆,查詢包含「NET小結」的記錄:

查詢方式語法耗時
LIKE 雙欄位`WHERE Subject LIKE '%NET小結%' OR Detail LIKE '%NET小結%'`2 分 33 秒
CONTAINS 全表`WHERE CONTAINS (Asks.*, 'NET小結')`0 分 40 秒
LIKE 單欄位`WHERE Subject LIKE '%NET小結%'`0 分 42 秒
CONTAINS 單欄位`WHERE CONTAINS (Asks.Subject, 'NET小結')`0 分 26 秒

結論:`CONTAINS` 結合全文索引,速度較 `LIKE` 快數十倍,且支援語意查詢(前綴、鄰近、權重等)。

常用維護指令

  • 重建目錄:`EXEC sp_fulltext_catalog 'Ask91Fable', 'rebuild';`
  • 停止填充:`EXEC sp_fulltext_catalog 'Ask91Fable', 'stop';`
  • 刪除目錄:`EXEC sp_fulltext_catalog 'Ask91Fable', 'drop';`

相關系統預存程序速查

程序權限用途
sp_fulltext_serviceserveradmin/sysadmin設定全文搜尋屬性
sp_fulltext_catalogdb_owner建立/刪除目錄、啟動/停止填充
sp_fulltext_databasedb_owner啟用/停用資料庫全文功能
sp_fulltext_tabledb_ddladmin/db_owner註冊/移除全文索引資料表、啟用/停用
sp_fulltext_columndb_ddladmin加入/移除索引欄位
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved