查找上次呼叫尝试的最佳方式 - CTI数据库

时间:2014-11-20 17:45:37

标签: sql-server tsql join

我使用MSSQL数据库作为小型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    

在电话表中有成千上万的记录和其他几个连接,它需要花费太多时间。我会很感激如何加快它的速度。

沙格

1 个答案:

答案 0 :(得分: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