哪个sql查询更快?

     2023-03-29     77

关键词:

【中文标题】哪个sql查询更快?【英文标题】:Which sql query is faster? 【发布时间】:2014-12-25 11:29:56 【问题描述】:

我正在使用 postgresql 数据库并希望改进查询(第一个)。我将其重写为第二个。但是我读了一篇文章,上面说“NOT IN”是非常缓慢的构造。我希望您说出两者中哪一个更快和/或提出更好的解决方案。

第一次查询

UPDATE reseller_product d SET status=3 FROM (
    SELECT reseller_product.sku FROM reseller_product
    LEFT OUTER JOIN main_table ON main_table.sku=reseller_product.sku
    WHERE main_table.sku IS NULL AND reseller_product.reseller_id='||resID||'
)as r
WHERE d.sku=r.sku and d.distributor_id='||distrID||' and d.reseller_id='||resID||'

第二次查询

UPDATE reseller_product SET status=3
WHERE distributor_id='||distrID||' AND reseller_id='||resID||' 
AND sku NOT IN (SELECT sku FROM main_table);

编辑

抱歉,没有注意到第二个查询中名称为“d”的错误

【问题讨论】:

答案取决于 .sku 的 NULLability 及其唯一性和基数。顺便说一句:此查询的第三个版本使用NOT EXISTS() ALSO:相关名称d 未在第二个查询中定义。所以查询会失败,所以会是最快的。 您可以使用命令“EXPLAIN”来详细说明查询的执行计划——这可能会对您有所帮助:postgresql.org/docs/9.2/static/sql-explain.html @wildplasser 相关名称 d 未在第二个查询中定义。所以查询会失败,所以会是最快的。这真的很真实也很有趣。 :) 更有趣的是:它将在恒定时间内运行,与数据的结构、大小和分布无关! 【参考方案1】:

重写查询可能会有所帮助,但我会首先检查 main_table 和 reseller_product 是否在 sku 上都有索引。搜索(和连接)非索引字段的复杂度为 O(n),而索引字段的复杂度为 O(log(n)) 或常量,具体取决于索引实现。

【讨论】:

【参考方案2】:

第三版:

UPDATE reseller_product u
SET status = 3
WHERE u.distributor_id = '||distrID||'
  AND u.reseller_id = '||resID||' 
  AND NOT EXISTS (
    SELECT * FROM main_table m
    WHERE m.sku = u.sku
    );

【讨论】:

插入、更新或删除 MongoDB 或 SQL 哪个更快?

】插入、更新或删除MongoDB或SQL哪个更快?【英文标题】:Whatisfastertoinsert,updateordeleteMongoDBorSQL?【发布时间】:2019-05-1612:48:00【问题描述】:我正在决定在我的下一个应用程序中使用MongoDB和MySQL。我将使用Elasticsearch进行搜索查询... 查看详情

这两个sql查询语句哪个更快?

...name列like'%b%'所对应的TableB的value有这两个sql语句,哪个效率更高呢?A:selectb.valuefromTableAa,TableBwherea.id=b.idanda.namelike'%b%';B:selectvaluefromTableBwhereidin(selectidfromTableAwherenamelike'%b%');说明理由,还有就是如何看一个语句... 查看详情

哪个更快?组合查询还是多个查询?

】哪个更快?组合查询还是多个查询?【英文标题】:WhichisFaster?CombinedorMultipleQueries?【发布时间】:2017-12-2320:56:45【问题描述】:这些查询在1millionrecord的表中的性能方面有什么不同吗?id是PRIMARYuserid是INDEXEDname是UNIQUE组合查询... 查看详情

哪个选择查询将运行得更快[重复]

】哪个选择查询将运行得更快[重复]【英文标题】:WhichSelectquerywillrunfaster[duplicate]【发布时间】:2014-12-0207:38:55【问题描述】:您好,我正在尝试从包含大约100万条记录的表中获取最大ID。请建议我在这些查询中哪一个执行得更... 查看详情

哪个Oracle查询更快

】哪个Oracle查询更快【英文标题】:WhichOraclequeryisfaster【发布时间】:2018-11-2415:08:50【问题描述】:我正在尝试使用C#WPF视图显示员工属性。我的数据库中有“2”个不同的oracle表中的数据:那些高层次的表结构是……员工表(EMP)-... 查看详情

哪个是更快的单个大查询或几个小查询?

】哪个是更快的单个大查询或几个小查询?【英文标题】:Whichoneisfastersinglebigqueryorfewsmallqueries?【发布时间】:2015-07-1204:11:52【问题描述】:所以我想从数据库中抓取数据,哪种方法更快,创建几个查询还是一个多查询?【问题... 查看详情

哪个更快?组合或多个查询?(代码片段)

在使用1millionrecord的表格中,这些查询与性能有什么不同?id是PRIMARYuserid是INDEXEDname是UNIQUE组合查询:$Query='SELECTname,(SELECTEXISTS(SELECTidFROMreportsWHEREuserid=1))ASstatusFROMusersWHEREid=1LIMIT1';$stmt->prepare($Query 查看详情

哪个 SQL 语句更快? (拥有与在哪里......)

】哪个SQL语句更快?(拥有与在哪里......)【英文标题】:WhichSQLstatementisfaster?(HAVINGvs.WHERE...)【发布时间】:2010-09-2415:00:51【问题描述】:SELECTNR_DZIALU,COUNT(NR_DZIALU)ASLICZ_PRAC_DZIALUFROMPRACOWNICYGROUPBYNR_DZIALUHAVINGNR_DZIALU=30或SELECTNR_DZI 查看详情

Android SQLite:哪个查询(“query”或“rawQuery”)更快?

】AndroidSQLite:哪个查询(“query”或“rawQuery”)更快?【英文标题】:AndroidSQLite:Whichquery("query"or"rawQuery")isfaster?【发布时间】:2012-02-0811:40:48【问题描述】:我正在开发一个android数据库应用程序。我只想知道哪... 查看详情

objectForPrimaryKey 与过滤查询(匹配主键)性能,哪个对大数据更快?

】objectForPrimaryKey与过滤查询(匹配主键)性能,哪个对大数据更快?【英文标题】:objectForPrimaryKeyvsfilteredquery(tomatchprimarykey)performance,whichoneisfasterforlargedata?【发布时间】:2021-03-1910:25:05【问题描述】:这里我举个例子classTestReal... 查看详情

哪个 SQL 更快?选择然后更新 VS。使用内部选择更新

】哪个SQL更快?选择然后更新VS。使用内部选择更新【英文标题】:WhichSQLisfaster?SelectandthenUpdateVS.Updatewithinnerselect【发布时间】:2019-12-1713:24:11【问题描述】:我正在使用Oracle数据库。请参阅以下2个示例(完全相同):1.CREATEORRE... 查看详情

如果两者产生相同的结果,哪个运行更快的 sql 或 plsql? [关闭]

】如果两者产生相同的结果,哪个运行更快的sql或plsql?[关闭]【英文标题】:whichrunsfastersqlorplsqlifbothproducessameresult?[closed]【发布时间】:2014-10-3113:54:48【问题描述】:如果两者产生相同的结果,哪个运行更快的sql或plsql?这个... 查看详情

子查询或 leftjoin with group by 哪个更快?

】子查询或leftjoinwithgroupby哪个更快?【英文标题】:subqueryorleftjoinwithgroupbywhichoneisfaster?【发布时间】:2011-11-1312:35:39【问题描述】:我必须在我的应用程序中使用总计列显示运行总计..​​.所以我使用以下查询来查找运行总计.... 查看详情

MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]

】MySQL:在1:N关系中哪个更快?加入还是两个查询?[复制]【英文标题】:MySQL:Whichoneisfasterin1:Nrelationships?Joinortwoqueries?[duplicate]【发布时间】:2013-12-3103:48:12【问题描述】:考虑由main_table_id链接的两个表:http://www.zigdigital.com.br/do... 查看详情

分页结果集中的选择子查询或左外连接哪个更快

】分页结果集中的选择子查询或左外连接哪个更快【英文标题】:Whichisfasteraselectsub-queryoraleftouterjoininapaginatedresultset【发布时间】:2011-11-0901:14:31【问题描述】:使用MSSQL查询时,从计算表中获取单个列并将其连接到结果集的最... 查看详情

哪个更快? Spark SQL with Where 子句或在 Spark SQL 之后在 Dataframe 中使用过滤器

】哪个更快?SparkSQLwithWhere子句或在SparkSQL之后在Dataframe中使用过滤器【英文标题】:WhichOneisfaster?SparkSQLwithWhereclauseorUseofFilterinDataframeafterSparkSQL【发布时间】:2016-11-0712:38:30【问题描述】:哪个更快?SparkSQL使用Where子句还是在Sp... 查看详情

数据集与sql查询(选择,过程,函数)哪个更好用?(代码片段)

我目前使用SQL查询(选择,过程,函数)与数据库进行通信。直到现在我还没有使用过数据集。我真的无法得到数据集的概念。我只知道它们也可用于从数据库中选择,插入,更新或删除。但是,当我们可以使用SQL命令执行相同... 查看详情

SQL Server 2005:哪个更快?条件超过 2 列或超过 2 行?

】SQLServer2005:哪个更快?条件超过2列或超过2行?【英文标题】:SQLServer2005:whichoneisfaster?Conditionover2columnsorover2rows?【发布时间】:2010-02-0922:17:24【问题描述】:Table1------------IDIdColumn1Idcolumn2Table2------------IDIdColumnIdPair它们都包含... 查看详情