当前位置: 首页 > 面试题库 >

SQL:排除性能比较(加入与未加入)

柳翼
2023-03-14
问题内容

我对查询sql的最有效方法感到好奇。例如,有2个表(tableA和tableB)可以在1列(col1)上连接。我想为colB在tableB中不存在的所有行显示tableA的数据。

(因此,换句话说,表B包含表A的col1的子集。我想显示表A而不包含表B中存在的数据)

假设tableB有100行,而tableA是巨大的(超过1M行)。我知道可以使用“不存在(不存在)”,但是也许有更有效的方法(较少的计算时间)来做到这一点。我可能没有外部联接吗?

代码片段和注释非常受赞赏。


问题答案:

取决于RDBMS。对于Microsoft SQL Server ,OUTER JOIN首选NOT
EXISTS
,因为它可以使用更有效的Anti-Semi连接。

对于Oracle,Minus显然比NOT
EXISTS更合适(在适当的地方)

您将需要查看执行计划并做出决定。



 类似资料:
  • 由于许多潜在的Pandas用户对SQL有一定的了解,因此本页面旨在提供一些如何使用pandas执行各种SQL操作的示例。 import pandas as pd url = 'https://raw.github.com/pandasdev/ pandas/master/pandas/tests/data/tips.csv' tips=pd.read_csv(url) print tips.hea

  • 问题内容: 公认的是,在int列上搜索表的速度比在字符串列上搜索表的速度快(例如varchar)。 但是,如果我的衬衫表带有“颜色”列,那么创建一个颜色表时,该表上的主键是衬衫表上的外键会更好吗?搜索绿色的衬衫时,该联接是否会抵消在衬衫的“颜色”列中的值为int而不是诸如“绿色”之类的字符串值的性能优势? 问题答案: 与正在执行的其他操作相比,这两种方法之间不太可能有很大的性能差异。如果只有少数几

  • 我们需要在Kafka主题上实现连接,同时考虑延迟数据或“不在连接中”,这意味着流中延迟或不在连接中的数据不会被丢弃/丢失,但会被标记为超时, 连接的结果被产生以输出Kafka主题(如果发生超时字段)。 (独立部署中的火花2.1.1,Kafka 10) Kafka在主题:X,Y,...输出主题结果将如下所示: 我发现三个解决方案写在这里,1和2从火花流官方留档,但与我们不相关(数据不在加入Dtsre

  • 更新:为了更明显地说明我正在努力做的事情:我将拥有5000万以上的设备流媒体音频。流平均为100KB,峰值流量时为200K流/分钟。我正在寻找一种存储解决方案来满足这种需求。我一直在研究Bookkeeper、Kafka、Ignite、Cassandra和Redis。到目前为止,我只对redis和ignite进行了基准测试,但我很惊讶ignite这么慢。

  • 我有一个简单的密码加密程序,当用户注册时,它会给我一个散列/盐析密码,以存储在我的数据库中。代码: 当用户登录时,我想我不能简单地通过此代码将输入的密码放回并进行比较,因为这会给我一个不同的结果。如何简单地将存储的密码与输入的登录密码进行比较?