【问题标题】:Optimal way to find last call attempt - CTI database查找最后一次呼叫尝试的最佳方法 - CTI 数据库
【发布时间】:2015-01-18 16:47:56
【问题描述】:

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

由于调用表中有数以千计的记录和其他一些联接,因此会花费太多时间。我将不胜感激一些如何加快速度的想法。

粗制滥造

【问题讨论】:

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

标签: sql-server tsql join


【解决方案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 

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多