2014-11-20 23 views
2

我正在使用MSSQL數據庫作爲小型CTI應用程序的後端,我想知道是否有更好的方式來查詢每個在CTI數據庫中調用的客戶端的最後一次調用嘗試。找到最後一次呼叫嘗試的最佳方式 - CTI數據庫

我得到了兩個表格CUSTOMERS和CALLS。 CALLS用外鍵存儲所有呼叫的歷史記錄 - CUSTOMER_ID作爲到CUSTOMER表的鏈接)。

我的查詢是這樣的:

SELECT * FROM CALLS x 
JOIN 
(SELECT MAX(CALL_ID), CUSTOMER_ID FROM CALLS GROUP BY CUSTOMER_ID) y 
ON 
x.CALL_ID = y.CALL_ID  

隨着記錄情侶tousands在電話表和其他幾個加入它越來越採取有點太多時間。我會感謝一些想法如何加速它。

Shag

+0

我們需要看到表定義,包括和關鍵和索引正確地回答這個問題。此外,表格的行數會很有幫助。 – RBarryYoung 2014-11-20 17:52:56

回答

1

試試這個。使用window function這將避免撞上同一表兩次

SELECT * 
FROM (SELECT Row_number() OVER(partition BY CUSTOMER_ID ORDER BY CALL_ID DESC) rn, 
       * 
     FROM CALLS) a 
WHERE rn = 1 
+0

實施後我得到了30%的加速,謝謝。 – user3357885 2014-11-21 09:18:06