我正在創建sql查詢,並且我在一本書中讀到了當使用NOT
運算符或LIKE
運算符Indexes
不起作用。這個陳述是多少真實。如果陳述是真實的,我們如何避免這種情況。應該如何做一個查詢來完成避免這些運算符的相同工作。關於哪些操作索引不能正常工作或者沒有使用
什麼所有其他領域在SQL Server中索引延遲。
我正在創建sql查詢,並且我在一本書中讀到了當使用NOT
運算符或LIKE
運算符Indexes
不起作用。這個陳述是多少真實。如果陳述是真實的,我們如何避免這種情況。應該如何做一個查詢來完成避免這些運算符的相同工作。關於哪些操作索引不能正常工作或者沒有使用
什麼所有其他領域在SQL Server中索引延遲。
就像是通配符萊夫特賽德不能使用索引,如果一個是爲列定義語句:
WHERE column LIKE '%abc'
WHERE column LIKE '%abc%'
但無論這些可以使用索引:
WHERE column LIKE 'abc%'
WHERE column LIKE 'abc'
坦率地說,使用LIKE對於非常簡單的文本搜索 - 如果您確實需要一個性能良好的文本搜索,請查看全文搜索(FTS)。全文搜索有它自己的索引。
決定實際上歸結爲優化器使用哪個索引,但確保索引不會用於在函數調用中包裝列值。例如,這將不使用索引:
WHERE CHARINDEX(column, 'abc') > 0
WHERE CAST(column AS DATETIME) <= '2010-01-01'
,方便您隨時隨地操縱表中的數據 - 特別是數據類型的改變 - 將呈現一個指標無用的,因爲指數是不變的價值觀,有沒有辦法涉及到改變的數據。
對於這樣的容貌這篇文章: SQL Performance - Indexes and the LIKE clause
對於使用索引將依賴於特定的查詢NOT運算符。
查詢分析器內部有一個稱爲「顯示執行計劃」(位於查詢下拉菜單中)的選項。如果您打開此選項,那麼無論何時在查詢分析器中運行查詢,您都將獲得查詢執行計劃。使用它來分析查詢的有效性。根據結果,您可能需要使用其他查詢或添加更好的索引。例如。表掃描意味着不使用索引,書籤查找意味着你應該限制行或使用覆蓋索引,如果有一個過濾器可能需要從where子句中刪除任何函數調用,排序可能會很慢。
您需要更深入地探索此問題的搜索字詞是可靠的。
這裏是一個文章,讓你開始: http://www.sql-server-performance.com/tips/t_sql_where_p2.aspx