使用 CTE 有哪些优点/缺点?

2024-01-09

我正在考虑提高某些 SQL 的性能,目前 CTE 在脚本中被多次使用和引用。使用表变量我会得到改进吗? (不能使用临时表,因为代码位于函数内)。


您确实必须进行性能测试 - 没有是/否的答案。根据上面 Andy Living 的帖子链接,CTE 只是查询或子查询的简写。

如果您在同一个函数中调用它两次或多次,那么如果您填充一个表变量然后连接到该变量或从中选择,您可能会获得更好的性能。但是,由于表变量在某处占用空间,并且没有索引/统计信息(表变量上任何声明的主键除外),因此无法说哪个会更快。

他们都有成本和节省,哪一个是最好的方法取决于他们提取的数据以及他们如何处理这些数据。我遇到过你的情况,并且在测试了各种条件下的速度之后 - 有些函数使用 CTE,而其他函数使用表变量。

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

使用 CTE 有哪些优点/缺点? 的相关文章

  • MySQL 5:我的 GROUP BY 字段的顺序重要吗?

    Peeps 我的 MySQL 查询中有一些聚合 计算字段 我的 GROUP BY 子句是动态生成的 具体取决于用户在 Web 表单中选择的选项 很好奇 GROUP BY 子句中列出的字段顺序是否会对计算产生任何影响 例如 SUM AVERA
  • 当两个表非常相似时,什么时候应该将它们合并?

    我有事件和照片 然后对两者进行评论 现在 我有两个评论表 一个用于与事件相关的评论 另一个用于照片评论 架构与此类似 CREATE TABLE EventComments CommentId int EventId int Comment
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • 处理大数据表时应该如何使用Hibernate Mapping

    问题定义 我有一个包含大量数据 超过 100 000 行 的数据库表 表结构如下 AppID DocID DocStatus 1 100 0 1 101 1 2 200 0 2 300 1 每个 applicationID 可能有数千个文档
  • SQL Server 2008 GUID 列全为 0

    我希望这是我做的一个简单的傻事 我的数据库中有一个表 设置如下 column name widget guid data type uniqueidentifier allow nulls false default value newid
  • PL/SQL 过程:如何返回 select 语句?

    我想创建一个存储过程 on ORACLE数据库服务器我的问题是 我不知道如何返回 select 语句 这是程序中应包含的逻辑 输入参数 过滤器1 int 过滤器2 字符串 with cte as select val1 val2 stdde
  • 重新启动后无法远程或本地连接到 SQL Server

    上周末进行一些网络维护后 我们的开发服务器出现了一些问题 导致我们重新启动它 重新启动期间安装了一些更新 这可能是也可能不是一个因素 从那时起 我们就无法连接到 SQL Server 2005 即使是通过 Management Studio
  • 如何获得组中“中间”值的平均值?

    我有一个包含值和组 ID 的表 简化示例 我需要获取中间 3 个值的每组的平均值 因此 如果有 1 2 或 3 个值 则它只是平均值 但如果有 4 个值 它将排除最高值 5 个值将排除最高值和最低值 等等 我正在考虑某种窗口函数 但我不确定
  • 在 SQL 中如何获得整数的最大值?

    我试图从 MySQL 数据库中找出整数 有符号或无符号 的最大值 有没有办法从数据库本身提取这些信息 是否有我可以使用的内置常量或函数 标准 SQL 或 MySQL 特定的 At http dev mysql com doc refman
  • 从头开始构建 OLAP 解决方案时应该注意什么?

    我在一家运行基于 MS SQL 数据库服务器的软件产品的公司工作 多年来我已经用 PHP 开发了 20 30 个相当高级的报告 直接从数据库获取数据 这非常成功 人们对此感到高兴 但它有一些缺点 对于新的变化 它可能是相当开发密集型的 用户
  • 内连接 3 个表

    我正在使用 PHP 和 PDO 我需要重新收集连接 3 个表的信息 photos albums 相册照片 该表具有以下结构 photos photo id int path varchar nick varchar date timesta
  • 什么是多维 OLAP CUBE 并给出超过 3 维的多维数据集示例

    由于我是 SSAS 的新手 一直在阅读有关多维 OLAP 多维数据集的文章 并努力理解多维数据集的概念 据说虽然术语 多维数据集 表示三个维度 但多维数据集最多可以有 64 个维度 你能解释一下这在立方体上怎么可能吗 除了 3 Dim 示例
  • 迁移问题:MS SQL > MySQL:插入缓冲区内存

    我在使用 MySQL Workbench 上的内置迁移工具时遇到问题 我正在将一个非常大的数据库从 MS SQL 2014 迁移到 MySQL MS SQL 服务器本地部署在我的 Windows 8 1 桌面上 MySQL 服务器在我的网络
  • 在 Oracle 中使用数据透视表的建议

    我需要一份报告 我应该使用数据透视表 报告将按类别分组 使用 case when 语句不好 因为有很多类别 您可以将 Northwind 数据库视为示例 所有类别将显示为列和报告将显示客户在类别中的偏好 我不知道另一个解决方案 并在互联网上
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • LEFT JOIN 比 INNER JOIN 快得多

    我有一张桌子 MainTable 有超过 600 000 条记录 它通过第二个表连接到自身 JoinTable 在父 子类型关系中 SELECT Child ID Parent ID FROM MainTable AS Child JOIN
  • 如何安全地使用保留的 SQL 名称?

    我正在使用 Cakephp 3 使用 sqlserver 作为数据源服务器 我确信我的数据库连接没有问题 因为 home ctp 提示我已连接到我的数据库 并且我还使用迁移插件来创建我的表 似乎使用它没有问题这些工具 但是在我烘焙 MVC
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • 索引在 NOT IN 或 <> 子句中起作用吗?

    我读过 至少 Oracle 数据库中的普通索引基本上是 B 树结构 因此存储处理适当根节点的记录 小于 根的记录被迭代地存储在树的左侧部分 而 大于 根的记录被存储在右侧部分 正是这种存储方法有助于通过树遍历实现更快的扫描 因为深度和广度都

随机推荐

  • 基于令牌的数据库身份验证失败,并显示“用户‘NT AUTHORITY\ANONYMOUS LOGON’登录失败”。

    我在基于令牌的数据库身份验证工作时遇到问题 使用 Active Directory 密码连接可以正常工作 但是当使用令牌连接时 我收到以下错误 用户 NT AUTHORITY ANONYMOUS LOGON 登录失败 这个问题已经讨论过了在
  • Admob 中介 - 发布商 ID 与中介 ID

    我想知道 Admob 中介的正确范例是什么 到目前为止 我已经有了一个普通的 AdView 横幅 这就是我认为它应该如何工作的 onFailedToReceiveAd 捕获此事件 这意味着 admob 无法提供广告 使用中介 ID 创建新的
  • 使用 MinGW 的 Eclipse CDT 不在控制台中输出

    我有一台 Windows 7 64 位 PC 并且正在尝试安装免费的 C IDE 因此我选择使用 CDT 安装 Eclipse Helios 对于 g make 和 gdb 我根据本教程安装了 msys 和 mingw http wiki
  • CoffeeScript 在更改和加载时动态选择表单字段

    我有一个 Rails 应用程序 我试图根据表单中选择的区域来选择设施列表 到目前为止 我已经实现了 group collection select 以及一些 CoffeeScript 来执行此操作 它在创建新记录和选择区域时起作用 行为是仅
  • py2neo 中的批处理

    我已经开始使用 Node4j 并且正在探索一些批处理 但不幸的是 我在创建节点之间的关系时遇到了一些问题 我的问题如下 我有一个从文件中读取的网站和用户列表 我可能在该文件中有重复的网站和用户 所以我不想为这些重复的条目插入新节点 但由于文
  • 如何将一些文本信息封装在图像中并使用 MATLAB 提取它?

    new img convert img text img text convert back new img 有人可以用 MATLAB 的内置图像来说明吗 我相信你正在寻找隐写术 http en wikipedia org wiki Ste
  • 更改 Yii2 视图中的布局文件

    我正在使用 Yii2 做一个小项目 假设我在视图中有相同的布局 页眉 页脚 例如site 除了login php在此看来 我想在这个文件中使用不同的页眉 页脚或没有页眉 页脚 我可以做什么来仅从此视图文件中删除页眉 页脚 我所能做的就是在不
  • htmlagilitypack 和动态内容问题

    我想创建一个网络 scraper 应用程序 并且我想使用网络浏览器控件 htmlagilitypack 和 xpath 来完成它 现在我设法创建 xpath 生成器 我使用网络浏览器用于此目的 它工作正常 但有时我无法动态获取 通过 jav
  • 当包含 Ice 服务器时,WebRTC 陷入连接状态(远程候选者甚至通过 LAN 也会导致问题)

    我暂时创建了一个RTCPeerConnection没有任何iceServers在尝试解决一个问题时上一期 https stackoverflow com questions 62020695 webrtc stuck in connecti
  • 如何正确访问当前AppDomain的PrivateBinPath属性?

    由于 AppDomain AppendPrivatePath 已过时 我试图弄清楚如何为项目中的当前 AppDomain 指定 PrivateBinPath 而不需要启动一个全新的 AppDomain 并且稍后能够访问它 我知道我可以在 A
  • 如何完全禁用 Django 管理员的身份验证

    我有一个 Django 服务器 使用 PostGis 我想禁用与身份验证相关的所有内容 进入管理员时无需进行身份验证 在管理中隐藏用户 组 在网上搜索后我尝试了以下组合this https stackoverflow com a 40008
  • 如何使用button props动态禁用antd modal的按钮

    我有一个 antd Modal 我正在尝试验证一个字段并为其提供验证 如何根据验证启用 禁用 确定 按钮 如果验证成功 则应启用按钮 否则应禁用按钮
  • 随处使用 Visual Studio 命令提示符工具

    如何使用 VS 命令提示符中包含的工具 Programs MS Visual Studio 2008 Visual Studio Tools Visual Studio 2008 Command Prompt 从任何命令提示符 即不调用vc
  • 自动将产品分配到 WooCommerce 中定义的产品类别

    在 Woocommerce 中 如果产品具有特定的自定义字段值 使用高级自定义字段插件生成此字段 我会尝试自动将给定的产品类别分配给产品 In my functions php我有 function auto add category pr
  • 使用 Visual C++ 将二维数组 int[n][m] 写入 HDF5 文件

    我刚刚开始使用 HDF5 希望得到有关以下内容的一些建议 我有一个二维数组 data 传递到一个方法中 该方法如下所示 void WriteData int data 48 100 int sizes 48 数据的大小实际上不是 48 x
  • CMake 和 XCode:“找不到‘NSObject’的接口声明”

    我正在尝试使用 CMake 生成 XCode 项目 但遇到了一些问题 CMake 生成的项目很好 但后来很明显它没有链接到 Foundation 和 UIKit 框架 我对 CMake 还很陌生 一直在努力克服这个问题 但没有成功 CMak
  • 匹配 IRC 昵称的正则表达式

    如何使用正则表达式来匹配 IRC 昵称 如果这会产生影响的话 这是在 Ruby 中完成的 可能会 使用正则表达式的语法 但谁知道呢 编辑 IRC 昵称可以包含任何字母 数字或以下任何字符 lt If you are testing a si
  • 创建新DataFrame的性能

    我很惊讶timings创建 DataFrames 的这个问题 https stackoverflow com q 41861846 2901002 30000 rows x 2 columns df pd concat pd DataFra
  • 在 Lance Game 中向各个玩家发送“秘密”数据

    我想知道 lance gg 中是否有一种简单的方法可以仅向每个玩家发送特定于玩家的数据 而不是向所有玩家发送所有数据 我希望创建一个扑克游戏 并且不希望每个玩家持有的数据向所有玩家广播 而是只让每个玩家接收有关他们自己的牌的信息 这在当前的
  • 使用 CTE 有哪些优点/缺点?

    我正在考虑提高某些 SQL 的性能 目前 CTE 在脚本中被多次使用和引用 使用表变量我会得到改进吗 不能使用临时表 因为代码位于函数内 您确实必须进行性能测试 没有是 否的答案 根据上面 Andy Living 的帖子链接 CTE 只是查