我使用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
在电话表中有成千上万的记录和其他几个连接,它需要花费太多时间。我会很感激如何加快它的速度。
沙格
答案 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