我有一個沒有任何主鍵的表。數據已經在那裏。我做了一個非聚集索引。但是當我運行查詢,實際執行計劃不顯示索引掃描。我認爲非聚集索引不起作用。可能是什麼原因。請幫我非聚集索引不起作用sql服務器
回答
首先 - 爲什麼沒有主鍵?如果它沒有主鍵,它不是表 - 只需添加一個!第二:即使你有一個索引,SQL Server查詢優化器也會一直關注你的查詢,以決定是否有意義使用索引(或不)。如果您選擇所有列和大部分行,那麼使用索引是毫無意義的。
所以需要避免的事情是:
SELECT * FROM dbo.YourTable
幾乎可以保證不使用任何指標- ,如果你沒有在您的查詢的好
WHERE
條款 - 如果你的指數是在一個並不真正選擇一小部分數據的列上;一個布爾列的索引,或者最多三個不同值的
Gender
列完全不
幫助不知道了很多關於你的表結構,包含在這些表中的數據,行數和什麼樣的你執行查詢的,沒有人能真正回答你的問題 - 它只是太寬泛....
更新:,如果你想創建一個表,該表一個聚集索引從您的主鍵不同,請執行以下步驟:
1)首先,設計你的表 2)然後打開索引設計器 - 在你選擇的列上創建一個新的,聚集索引。請注意 - 這不是主要關鍵!
3)在此之後,你可以把你的主鍵上ID
列 - 它會創建一個索引,但索引爲不聚集!
+1。擊敗我!我會給它+5爲「爲什麼沒有主鍵?」如果我能 – 2010-12-07 06:38:32
謝謝marc_s – 2010-12-07 06:49:33
沒有有任何我猜想,原因是該表是太小索引查找是值得的更多信息。
如果您的表的行數少於幾千行,那麼SQL Server幾乎總是會選擇執行表/索引掃描,無論該表上的索引爲,只是因爲索引掃描實際上更快。
索引掃描本身並不一定表示性能問題 - 查詢是否真的很慢?
- 1. SQL服務器:聚集索引慢
- 2. SQL非聚集索引
- 3. SQL服務器行不聚簇索引
- 4. 聚集索引和非聚集索引
- 5. 複合聚集索引和非聚集索引在sql server 2005
- 6. sql server中的非聚集索引
- 7. 兩個SQL非聚集索引創建
- 8. SQL Server的非聚集索引設計
- 9. SQL Server 2008非聚集索引
- 10. 刪除SQL服務器中的聚集索引是否安全?
- 11. 加入非聚集索引
- 12. 將聚集索引轉換爲非聚集索引?
- 13. 非聚集索引功能相對於聚集索引尋求
- 14. SQL Server非聚簇索引
- 15. SQl服務器中的非集羣索引
- 16. 羣集索引和非聚簇索引 - SQL Server和Oracle?
- 17. 非聚集索引和非聚集索引的區別是什麼
- 18. SQL中的聚集索引
- 19. SQL Server聚集索引 - 索引問題
- 20. 禁用所有非聚集索引
- 21. 通過羣集或非聚集索引
- 22. 代碼與聚集索引不起作用
- 23. SQL服務器:CASE不起作用
- 24. Sql服務器更新不起作用
- 25. SQL Server:是否可以將UPDLOCK與非聚集索引一起使用?
- 26. SQL服務器 - 多聚集透視表
- 27. 索引在Sql服務器
- 28. 聚簇索引和非聚簇索引
- 29. 在SQL Server 2012上使用ServiceStack OrmLite創建非聚集索引
- 30. 同時具有非聚集索引和聚集索引的好處
您需要提供更多的細節!查詢優化器可能會決定忽略索引的原因有幾個(如果表非常小,如果使用的索引鍵不夠有選擇性,如果查詢包含其他謂詞等)。沒有顯示錶結構(例如。創建表腳本),索引創建腳本,查詢和查詢計劃,也沒有關於數據的一些統計信息,這將很難幫助您超出一般考慮範圍。 – mjv 2010-12-07 06:41:02