旧的 IN 与 Exists 与 Left Join(其中 ___ 为或不为空);表现

2023-12-04

我发现自己陷入了困境。我的表只有一列(抑制或包含列表),或多或少是 varchar(25) 但问题是在主查询中使用它们之前我没有时间对它们进行索引,并且取决于它的重要性,我不知道每个表中有多少行。所有这一切的核心基表大约有 140 万行和大约 50 列。

我的假设如下:

IN 不应在返回大量值(行)的情况下使用,因为它会按顺序查看值,对吧? (子查询上的 IN 不直接传递值)

连接(INNER 用于包含,LEFT 以及在抑制时检查 Null)最适合大型数据集(超过 1k 行左右)

EXISTS 一直让我担心,因为它似乎对每一行都执行一个子查询(全部 140 万行?哎呀。)

我的直觉是,如果可行的话,获取抑制表的计数并使用 IN(对于 1k 行以下)和 INNER/LEFT Join(对于 1k 行以上的抑制表)注意,我将抑制的字段将是索引中的索引大基表,但抑制表不会。想法?

预先感谢您的任何和所有评论和/或建议。


假设 TSQL 的意思是SQL Server,您是否看过有关 NOT IN、NOT EXISTS 和 LEFT JOIN IS NULL 比较的链接?综上所述,只要被比较的列不能为NULL,NOT IN and NOT EXISTS比更有效率LEFT JOIN/IS NULL...

关于 IN 和 EXISTS 之间的区别需要记住的一点 - EXISTS 是一个布尔运算符,并且在第一次满足条件时返回 true。尽管您在语法中看到了相关子查询,但 EXISTS 的性能比 IN 更好...

另外,IN 和 EXISTS 仅检查值比较是否存在。这意味着不会出现像 JOINing 时那样的重复记录...

这确实取决于,所以如果你真的想找到最好的方法,你就必须测试和比较查询计划正在做什么......

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

旧的 IN 与 Exists 与 Left Join(其中 ___ 为或不为空);表现 的相关文章

  • 通过 osql.exe 运行脚本时出现问题

    我尝试以这种格式运行我的软件的更新脚本 osql exe i path to script U 用户 P 密码 S sqlserver 位置 d 数据库名称 n b 大多数脚本的格式相同 并且都以 GO 结尾 其中很多都运行得很好 但随机脚
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如何将 数组传递给存储过程

    我有一个清单索赔数据在 C 中 它有三个项目 日期 类型和描述 其中可以有多行 如下所示 索赔数据 Date Type Description 01 02 2012 Medical Its a medical 05 02 2013 Thef
  • 更改列时快速删除并重新创建多个索引、视图、统计信息

    我的 项目 表中有一个 StoreNumber 列 我想将其更改为 NOT NULL 我最近清理了所有旧数据 以便不存在空条目 但是 当我执行以下语句时 由于对各种视图 索引和统计信息的多重依赖 它失败了 ALTER TABLE Proje
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 弹簧隔离支持吗? SQL快照隔离

    我们正在使用 SQL Server 快照隔离可能是提高性能和解决一些死锁问题的好方法 假设我们确实需要更改为快照隔离 我似乎找不到一种简单的方法来在 Springs 上启用快照隔离 Transactional 我发现以下 hibernate
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • 是否有适用于 SQL Server Express 的 SQL Server Profiler? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有适用于 SQL Server Express 的 SQL Server Profiler 也许是开源的 或者也许只是一个可以帮助我查
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • SQL Server 数据库架构版本控制和更新

    对于我的应用程序 我必须支持更新方案 并且数据库可能会受到影响 我希望能够从旧版本更新到最新版本 而无需安装中间版本 例如 假设我有版本 A 最旧的版本 B 中间版本 和 C 新版本 我希望能够将版本 A 直接更新到版本 C 对于应用程序文
  • 通知设置的数据库设计

    用户可以打开或关闭 他的通知设置 帐户 用于通知 例如 更改帐户资料信息 收到新消息等 通知可以通过电子邮件或手机 推送或短信 发送 用户可以只有 1 封电子邮件和多个手机设备 有什么方法可以改进以下数据库设计或者您会采取不同的方式吗 让我
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装

随机推荐

  • 将文档预加载到 iOS 应用程序中

    情况 我有一个 iOS 应用程序 可以处理文件并允许用户保存 编辑 打开这些文件并执行各种操作 我希望能够有一些预制文档供用户在打开应用程序 例如模板 以及他们自己的自定义文档时查看 问题 如何创建文档 或模板文件 并在用户安装我的应用程序
  • 在微风中创建复杂类型的未绑定实例的正确方法是什么?

    想象一下以下模型 class ComplexTypeA public string ComplexPropertyA class ParentTypeA public string ParentPropertyA public Comple
  • 省略html的可选标签

    我刚刚读过本文来自谷歌 我一直认为结束标签对于保持 html 文档干净并使其机器可读非常重要 但他们建议相反 你怎么看待这件事 谷歌的情况有点不寻常 因为他们提供了太多的主要搜索页面副本 以至于页面大小的任何微小节省很快都会增加 这意味着对
  • plpgsql - 在声明语句中使用动态表名

    我正在尝试编写 plpgsql 一个以下形式的函数 注意这是一个简化版本 CREATE FUNCTION check valid tablename regclass RETURNS boolean AS DECLARE valid row
  • css3 比例周围的空白

    我有一个小问题想要解决 但找不到任何好的答案 当我在 div 包含其他 div 上使用比例时 它会在 div 的 原始 宽度和高度周围留下空白 如何在缩放时删除 div 周围的空白 如果需要的话我可以使用js 编辑 这是一些代码 HTML
  • 为什么 lea 指令只是执行算术运算,却以内存寻址命名? [复制]

    这个问题在这里已经有答案了 The lea指令 加载有效地址 获取第一个值的内存地址并将其与第二个值相加 第二个值可能会相乘 然后它将该内存地址加载到给定的寄存器中 我举个例子来澄清一下我的困惑 eax 2 leal eax eax 4 e
  • iOS7.0 和 iOS 7.1 不支持动态桌面视图高度

    我在 UITableViewCell 的各种实现中使用了自动布局 该方法是让固有大小定义大小 进而为 tableview 行提供高度 奇怪的是 在 UITableViewCell 中使用 Autolayout 来定位 iOS7 及更高版本并
  • Android SENSOR_DELAY_FASTEST 不够快

    我正在使用传感器来平衡机器人 但是SENSOR DELAY FASTEST只提供10Hz的采样率 这根本不够快 有没有更快的采样方法 有没有一种方法可以轮询传感器而不是等待SensorEvent 有没有更快的采样方法 SENSOR DELA
  • bash - 如何获取(当前)儒略日数?

    如何获得今天的儒略日数 JDN 相等的 或者任何日期 我看了又看 但只发现了一些产生 year dayOfYear 的函数 而不是类似 2457854 in bash date j返回儒略日期 root TX Serv 1 date j 1
  • 如何在 ASP.NET 中从 Exchange Web 服务托管 API 2.0 更新约会

    我使用 EWS 托管 API 2 0 创建约会 效果很好 但也想更新现有的约会 我读到我需要预约 ID 来指定应编辑哪个预约 但是身份证在哪里呢 这是我创建约会的方法 Creates the Appointment Dim appointm
  • Koha RESTful api

    我一直在互联网上查找有关 Koha ILS Restful api 的信息 但没有找到任何具体信息 这个链接讨论了它的 HTTP API http wiki koha community org wiki Koha svc HTTP API
  • d3.js-向堆积条形图中的一个条形添加不同的颜色

    我使用 d3 js 创建了堆积条形图 我想显示一个具有不同颜色的条形图 以突出显示特定 x 轴值的数据 如下所示 我用来绘制堆积图的脚本如下 Set the dimensions of the canvas graph var svg d3
  • 如何在R中的关键字前添加逗号?

    我目前有一个城市的数据框 向量 其末尾有以以下任何一个开头的单词 Util Municipal Police Water 或末尾有 如何前往 Col City of Fake Municipal Court City of Pretend
  • 安装依赖项时composer-plugin-api错误

    我正在尝试为我正在处理的现有 Symfony 项目安装依赖项 我看了这个https getcomposer org doc 01 basic usage md composer lock the lock file它说我应该运行更新命令 p
  • 独立 EJB 客户端需要哪些 JBoss 5.1 库?

    我正在从 JBossAS 4 05 迁移到 JBoss 5 1 并且我对需要在 EJB 独立客户端中更改哪些库有疑问 从 JBossAS 4 0 5 开始 我有一个需要在所有客户端中部署的库的直接列表 但是 在 5 1 版本中 一些库被更改
  • 一页多个ajax请求+如何做+最佳实践

    我现在正在研究谷歌图表 并且已经有了一个基本的设置 它目前所做的是连接到数据库并返回基于 1 个查询的数据集 我想知道的是 如果我想用不同的数据库查询绘制更多图表 我该怎么做 或者什么是最佳实践 例如 已经有一个与一个查询的连接 如何添加另
  • MATLAB 舍入函数 - 如何向上或向下舍入 0.5?

    MATLAB 的舍入函数如何与 5 一起使用 比如5 5 是向上舍入到 6 还是向下舍入到 5 Mathworks 页面讨论这个函数没有提到这一点 这个例子也没有帮助 以下是 MATLAB 舍入函数的 mathworks 页面 mathwo
  • 从 Java 代码生成 Maven 原型

    我想知道是否可以在Java代码中运行maven命令 archetype generate 我已经使用 Maven 嵌入器尝试过此操作 但该库已被弃用 我想做一个原型 从远程目录生成 并捕获原型所需的属性 我想要运行的maven命令例如是 m
  • 可以在 R 中使用 gganimate 对多边形填充进行动画处理吗?

    I have county level data recording the year an invasive insect pest was first detected in that county between 2002 and 2
  • 旧的 IN 与 Exists 与 Left Join(其中 ___ 为或不为空);表现

    我发现自己陷入了困境 我的表只有一列 抑制或包含列表 或多或少是 varchar 25 但问题是在主查询中使用它们之前我没有时间对它们进行索引 并且取决于它的重要性 我不知道每个表中有多少行 所有这一切的核心基表大约有 140 万行和大约