同时通话

2023-11-27

我试图通过查看日期时间范围来计算进行特定呼叫时同时呼叫的数量。我的查询有效,但只需要大约 10 分钟才能执行 95,000 条记录,这太长了。有什么优化的想法吗?

SELECT r.*,
       rr.ChannelsActive  'ChannelsActive'
FROM #rg r
OUTER APPLY
(
      SELECT SUM(1) AS ChannelsActive
      FROM #rg r_inner 
      WHERE 
      (
             r_inner.CallStart BETWEEN r.CallStart AND r.CallEnd 
            OR r_inner.CallEnd BETWEEN r.CallStart AND r.CallEnd
            OR r.CallStart BETWEEN r_inner.CallStart AND r_inner.CallEnd 
            OR r.CallEnd BETWEEN r_inner.CallStart AND r_inner.CallEnd

      )
 ) rr

示例数据

CREATE TABLE #rg
  (
     CallStart DATETIME,
     CallEnd   DATETIME
  )

CREATE INDEX ix1
  ON #rg(CallStart, CallEnd)

CREATE INDEX ix2
  ON #rg(CallEnd, CallStart);

WITH T(N, R)
     AS (SELECT TOP (95000) ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS RN,
                            ABS(120 + 30 * SQRT(-2 * LOG(ABS(CAST(CAST(CRYPT_GEN_RANDOM(8) AS BIGINT) AS FLOAT) / 9223372036854775807))) * COS(2 * PI() * ABS(CAST(CAST(CRYPT_GEN_RANDOM(8) AS BIGINT) AS FLOAT) / 9223372036854775807)))
         FROM   sys.all_objects o1,
                sys.all_objects o2)
INSERT INTO #rg
SELECT DATEADD(SECOND, N, GETDATE()),
       DATEADD(SECOND, N + R, GETDATE())
FROM   T 

这应该可以做到:

 ;WITH cteCallEvents As
 (
        SELECT *, CallStart As EventTime, 1 As EventType FROM #rg r
    UNION ALL
        SELECT *, CallEnd   As EventTime, 0 As EventType FROM #rg r
 )
 , cteCallCounts As
 (
    SELECT *,
        ROW_NUMBER() OVER(Order By EventTime) as EventCount,
        ROW_NUMBER() OVER(Partition By EventType Order By EventTime) as TypeCount
    FROM cteCallEvents
 )
 SELECT *,
    2*TypeCount - EventCount  As OpenCalls
FROM    cteCallCounts
WHERE   EventType = 1

最多需要几秒钟。应该适用于任何 SQL Server 2005+。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同时通话 的相关文章

  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 选择两列中两个日期之间的记录

    如何选择两列中两个日期之间的记录 Select From MyTable Where 2009 09 25 is between ColumnDateFrom to ColumnDateTo 我有一个日期 2009 09 25 我喜欢选择
  • 从 SQLCE 4 迁移到 SQL Server 2008

    因此 作为早期采用者 我开发了一个基于 SQLCE4 ASP Net MVC3 和实体框架CTP5 http www microsoft com downloads en details aspx FamilyID 35adb688 f8a
  • 如何在SQL Compact Edition中导入数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我似乎没有找到合适的工具 也没有找到
  • 解释 SQL Server 中 sys.objects 中的类型代码

    在 SQL Server 上 sys objects 表包含 Type 和 Type Desc 属性 例如 对于我的一个数据库 SELECT DISTINCT Type Type Desc FROM Sys Objects ORDER BY
  • “$$ 处或附近的未终止的美元引号字符串

    我试图使用 DBeaver 声明一些变量并不断遇到此错误 Unterminated dollar quoted string at or near DO DECLARE A integer B integer BEGIN END 有任何想法
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • 从两个表中搜索然后删除

    我有两个包含成员数据的表 与 member id 列链接 我需要搜索所有记录email列以 pl 结尾 然后 我需要为此删除两个表中的所有记录 基于 member id 是否可以通过一条 SQL 语句完成此操作 SELECT member
  • Java 反射性能

    使用反射创建对象而不是调用类构造函数是否会导致任何显着的性能差异 是的 一点没错 通过反射查找类是 按幅度 更贵 Quoting Java关于反射的文档 http java sun com docs books tutorial refle
  • 如何使用 PHP 从 MSSQL 读取图像字段

    我正在创建一个网站 需要同步从离线 MSSQL 服务器读取的在线 MySQL 数据库 除图像字段外 所有通信和从 MSSQL 读取所有字段均工作正常 我已经使用 PHP 和 Mysql 一段时间了 知道如何向 MySQL 数据库插入 检索图
  • 如何更新 SQL Server 2000 中的 text 或 ntext 字段

    所以我需要更新一个文本字段 在下面使用时 UPDATE 语句或 WRITETEXT 语句都不起作用 CREATE TABLE MyTable IDField int MyField text INSERT INTO MyTable IDFi
  • SQL Server 之间

    我有一个表 其中有年 月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 2012 01 50 2012 02 200 现在 我想要SELECT2011 年 11 月至
  • 如何通过Object Id和Column Id查询表数据?

    有桌子Clients PK LastName Name Address 1 Vidal Arturo St 2 Lavezzi Ezequiel St 3 Cuadrado Guillermo St 我想得到 通过以下查询 我可以得到前四列
  • Invoke-Sqlcmd 运行脚本两次

    我遇到了一个非常奇怪的问题并且可以重复 基本上 我使用invoke sqlcmd通过使用 inputfile来调用脚本文件 但是如果脚本文件存在一些执行错误 例如插入到列不应为空的表中 则脚本文件将被执行两次 我也可以从探查器中看到这两个执
  • 我不确定在 SQL 中声明这些变量时出了什么问题

    我有以下代码 USE pricingdb go CREATE TABLE dbo Events 060107 2012 Date Time varchar 20 COLLATE SQL Latin1 General CP1 CI AS NU
  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • SQL:比较不同表中的两个计数

    我有 3 张桌子 一张桌子上有世界上每个国家及其代币 NAME CODE Afghanistan AFG Albania AL Algeria DZ American Samoa AMSA Andorra AND Angola ANG An
  • 如何找到在SQL Server中注册的程序集?

    我在 SQL Server 中注册了一个程序集 CREATE ASSEMBLY CLRFunctions AUTHORIZATION dbo FROM 0x4D5A90000300000 WITH PERMISSION SET SAFE 我

随机推荐

  • 获取发送到 click.group() 子命令的参数

    如果我有一个click group 对于多个子命令 有没有办法可以将命令行参数传递给组本身内的这些子命令 我知道你可以通过context 而且我知道我可以使用callback将在命令之前执行的函数 但我不知道是否有比使用更好的方法来执行此操
  • 有没有办法在 Windows 上的链接时重新定义 malloc?

    我想在链接时替换默认的 malloc 以使用自定义 malloc 但是当我尝试在程序中重新定义 malloc 时 出现以下错误 MSVCRT lib MSVCR80 dll error LNK2005 malloc already defi
  • Azure Functions,无法加载文件或程序集

    当使用NuGet协议Azure Functions 中的 NuGet 包 出现以下错误 System Private CoreLib Could not load file or assembly 4 18 2020 8 51 43 AM
  • 根据单元格值数据按路径引用 Excel 工作簿

    我有一个 Excel 工作表 可以从其他关闭的 Excel 工作簿中提取数据 目前 当我列出关闭的工作簿的整个路径时 它工作正常 但我想使用存储在单独单元格中的变量作为路径名的一部分 例如 我正在尝试引用名为的工作簿 工作簿12 10 12
  • 在 joomla 组件中写入多个表?

    我正在尝试创建一个使用多个表的组件 前端 我发现一两个帖子部分回答了这个问题 但没有一个真正回答了这个问题 对于知道如何做的人来说 这一点似乎总是简单明了 但从未真正解释过 或者我错过了正确的帖子 在我的组件中 用户在一个视图中输入需要存储
  • 需要处理 git-archive 中的 git-submodules

    我需要将 git 子模块打包到我创建的 tarball 中git archive 我在1 6 5中看到了git archive不支持 git 子模块 我在网上看到了几个处理这种情况的脚本 但我不确定该选择哪一个 最好 最官方的方法是什么 你
  • 在 C# Windows 服务上重定向 stdout+stderr

    我使用 C 编写了一个 Windows 服务ServiceBase帮手 在执行期间 会调用外部本机 DLL 中的一些过程 令人烦恼的是 这些过程以不受控制的方式写入 stdout 和 或 stderr 因为没有给出该 DLL 的源代码 是否
  • Android Studio:错误代码 1:Gradle:任务“:app:processDebugResources”执行失败

    我想编译一个项目 我得到了Error Gradle Execution failed for task app processDebugResources 这是例外 错误 Gradle 任务 app processDebugResource
  • 如何在javascript中检测浏览器渲染引擎?

    我读过一本名为 Professional Javascript For Web Developers 2nd Edition 的书 其中指出此代码可以检测浏览器渲染引擎
  • 如何控制recyclerView.smoothScrollToPosition(position)的滚动速度?

    我有一个回收器视图 我想要平滑地向下滚动 然后以编程方式向上滚动到它 以向用户显示其中的完整内容 我可以通过以下方式做到这一点 final int height recyclerView getChildAt 0 getHeight rec
  • docker libgomp.so.1 内的 Lightgbm:无法打开共享对象文件

    我在我的 Mac 上安装了 LightGBM 并之前针对不同的项目进行了测试 现在我在 Mac 上安装了 python 3 6 的 docker 中 一旦我添加import lightgbm as lgbm在我的 Flask 应用程序中 我
  • 对象名称“dbo.UserRoles”无效

    我收到此错误 SqlException 0x80131904 Invalid object name dbo UserRoles 但我无法捕获错误所在 我可以从其他表中检索其他数据 但不能从这个表中检索数据 条件是 web config 中
  • Android创建BitmapDescriptor异常

    我正在编写一个可以与谷歌地图和标记配合使用的应用程序 我的任务是在谷歌地图上创建并显示一些标记 标记中有自定义图像和文本 数据正在从服务器加载 每次用户移动谷歌地图相机时我都需要显示新的数据量 所以我使用 android maps util
  • 在同一台机器上运行的 Firefox 扩展和 C# 代码之间应该使用什么 IPC 方法?

    我有一个关于如何在 新 Firefox 扩展和现有 C 代码之间构建通信的问题 Firefox 扩展将使用配置数据并生成其他数据 因此需要从某处获取配置数据并将其输出保存在某处 数据由现有 C 代码生成 使用 因此我需要决定扩展应如何与 C
  • 更改绑定中的默认千位和小数分隔符

    假设我有一个号码1234567 89 该数字显示在 WPF TextBlock 中 我正在尝试申请StringFormat归因于Text属性 以便数字显示如下 1 234 567 89 正如您所看到的 千位分隔符和小数分隔符与不变区域性规范
  • sbt 插件没有从子模块中获取?

    我正在尝试将单个模块项目转换为两个模块 根聚合体 感觉就像是一件很正常的事情 因此 为了简化 我删除了添加的第二个项目 但我 做类似的事情 cd myproject mkdir core mv core 然后在 myproject 中添加一
  • 如何将 target="_blank" 添加到指定 div 内的链接?

    假设我有以下代码 div ul li a href http www google com google a li li div class some class dsalkfnm sladkfm a href http www yahoo
  • 将 MediaProjection 虚拟显示器的输出捕获到 ImageReader 时出现系统错误

    我正在开发一个需要将屏幕捕获为位图以进行传输的应用程序 我正在尝试使用新的 Android 5 0android media projection API进行屏幕捕获 此 API 的工作流程最终会调用 mediaProjection cre
  • 如何将 C++ 类转换为内在类型

    基本C 类问题 我目前有简单的代码 看起来像这样 typedef int sType int array 100 int test sType s return array int s 我想要的是将 sType 转换为类 这样 return
  • 同时通话

    我试图通过查看日期时间范围来计算进行特定呼叫时同时呼叫的数量 我的查询有效 但只需要大约 10 分钟才能执行 95 000 条记录 这太长了 有什么优化的想法吗 SELECT r rr ChannelsActive ChannelsActi