Sql server 查找最后一次呼叫尝试的最佳方法-CTI数据库
我正在使用MSSQL数据库作为小型CTI应用程序的后端,我想知道是否有更好的方法来查询CTI数据库中调用的每个客户端的上次调用调度 我有两张桌子和两个电话。CALLS存储外键为-CUSTOMER_ID的所有呼叫的历史记录(作为客户表的链接) 我的查询如下所示:Sql server 查找最后一次呼叫尝试的最佳方法-CTI数据库,sql-server,tsql,join,Sql Server,Tsql,Join,我正在使用MSSQL数据库作为小型CTI应用程序的后端,我想知道是否有更好的方法来查询CTI数据库中调用的每个客户端的上次调用调度 我有两张桌子和两个电话。CALLS存储外键为-CUSTOMER_ID的所有呼叫的历史记录(作为客户表的链接) 我的查询如下所示: SELECT * FROM CALLS x JOIN (SELECT MAX(CALL_ID), CUSTOMER_ID FROM CALLS GROUP BY CUSTOMER_ID) y ON x.CALL_ID = y.CA
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
由于calls表中有成百上千条记录,以及其他一些连接,这将花费太多的时间。如果您能给我一些加快速度的建议,我将不胜感激
沙格试试这个。使用
窗口功能
,可避免两次碰到相同的表
SELECT *
FROM (SELECT Row_number() OVER(partition BY CUSTOMER_ID ORDER BY CALL_ID DESC) rn,
*
FROM CALLS) a
WHERE rn = 1
我们需要查看表定义,包括和键和索引,才能正确回答这个问题。表的行数也会有帮助。