我有一個由另一個開發人員編寫的函數,我試圖修改其中的一個稍微不同的用法。 SP用它來檢查DB中存儲的文本文檔中是否存在某個短語,如果找到該值,則返回1;否則返回0。這是查詢:SQL Server 05是最佳的,LIKE%<term>%或CONTAINS()用於搜索大列
SELECT @mres=1 from documents where [email protected]
and contains(text, @search_term)
該文檔主要包含XML,而search_term是格式化爲nvarchar(40)的GUID。
這對我來說似乎運行得非常慢(需要5-6秒來執行這部分過程),但是在同一個腳本文件中也有上述版本的註釋。
SELECT @mres=1 from documents where [email protected]
and textlike '%' + @search_term + '%'
該版本的運行速度更快,以4ms爲單位,第一個例子爲15ms。
所以,我的問題是爲什麼第一次使用第二個?我認爲這個開發人員(誰不再與我合作)有一個很好的理由,但目前我正在努力尋找它..
它可能與全文索引有關嗎? (這是一個我正在使用的開發數據庫,所以生產版本可能有更好的索引..)我並不是那麼關注FTI,所以目前還不太確定。思考/想法?