2012-04-03 70 views
-2

我有一個臨時表,conatins多於10,000行。我試圖根據某些條件進行LIFO比賽。根據需求添加索引。查詢在while循環內部,並通過循環來完成匹配過程。我無法使用遊標,因爲記錄可能因邏輯而異。 while循環內的進程非常緩慢。 請讓我知道是否有任何可能的方法可以避免while循環。 也請讓我知道是否有任何問題在臨時表中創建索引,以及刪除查詢是否會更改表上的索引?如何繫上While循環

+2

你將需要提供更多的細節上FIFO和LIFO子集的部分; while循環在哪裏?在客戶端反覆調用查詢?它的循環標準是什麼?查詢是什麼樣的? – 2012-04-03 16:19:58

回答

0

喬·塞科的書SQL for Smarties一:高級SQL編程在第19章

+0

我對此感到抱歉。 while循環位於存儲過程中。循環遍歷臨時表中的所有記錄。一個標誌在那裏,它的值應該是'N',循環將一直持續到標誌的值爲'N'。該腳本從臨時表中刪除最終匹配的記錄。因此最後標誌應該被設置爲'Y'並且將結束循環。 – 2012-04-03 16:52:46

+0

如果您發佈緩存存儲過程的TSQL代碼,我們可以幫助您優化它。也許它使用排名函數或遞歸CTE進行了改進。 – 2012-04-03 18:37:11