如我們可以通過with(index(index_name))來指定對某個索引的使用,從而達到按索引index_name排序。
2.如何沒有強制指定索引,不管你的select 語句中是否在where后面使用了索引,Sql Server均可能基于代價對索引的使用進行調整,即使沒有where語句也有可能使用索引,即使有where語句也有可能不用索引。不管你的delete 語句中是否在where后面使用了索引,Sql Server均可能基于代價對索引的使用進行調整,即使沒有where語句也有可能使用索引,即使有where語句也有可能不用索引。帶相同where語句的select 和 delete 執行計劃很可能不一樣。
因此select 和 delete 得到的記錄順序很可能不一致,如果要選取前n條記錄,那么得到的記錄集盡管條數一致但內容不一致。盡管我們可以通過with(index(index_name))來強制select對索引的使用,但delete卻不能夠強制指定索引,因為delete涉及對索引本身的刪除。
這種情況下,如果數據庫的性能夠好,要備份的數據不多,就不要使用set rowcount來控制條數。但如果確需要控制一次刪除的條數,可以直接在where條件中控制更小的范圍,如時間范圍控制到小時,一天的數據通過24小時的循環來備份。
要么采用DTS作備份。
3.如果需要排序的字段是聚簇索引,那么就可以放心使用該索引完成排序。這時,不論執行計劃怎樣,sql server均按聚簇索引字段順序返回記錄。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/