Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 查找最后一次呼叫尝试的最佳方法-CTI数据库_Sql Server_Tsql_Join - Fatal编程技术网

Sql server 查找最后一次呼叫尝试的最佳方法-CTI数据库

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

我正在使用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.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 

我们需要查看表定义,包括和键和索引,才能正确回答这个问题。表的行数也会有帮助。