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

为什么这个带有子查询的SQL查询非常慢?

田骁
2023-03-14
问题内容

我有这个查询:

select *
from transaction_batch
where id IN
(
    select MAX(id) as id
    from transaction_batch
    where status_id IN (1,2)
    group by status_id
);

内部查询运行得非常快(不到0.1秒),以获取两个ID,一个ID表示状态1,一个ID表示状态2,然后它根据主键进行选择,以便对其进行索引。说明查询说,它仅使用where搜索135k行,我一生都无法弄清楚为什么这么慢。


问题答案:
select b.*
from transaction_batch b
inner join (
    select max(id) as id
    from transaction_batch
    where status_id in (1, 2)
    group by status_id
) bm on b.id = bm.id


 类似资料:
  • 问题内容: 怪物编辑:查询现在将运行,但返回错误答案。添加了一个粗略的架构。PatientID不是tblPatientVisits表中的主键,因为同一患者ID可以出现多次。 列出了每个县名,但每个计数(s.countyName)和计数(t.countyname)为1 编辑:我有一个查询,现在运行,但它返回 问题答案: 没有样本数据和理想的结果很难说,但是也许这是您要追求的?

  • 问题内容: 我有一个疑问,就所有权利而言,它应该不会失败,而且我一生无法弄清楚为什么 当我尝试运行查询时,出现“ INSERT INTO语句中的语法错误”,其中“注释”字段突出显示。如果我忽略“注释”字段及其值,则查询工作正常。是否真的有明显的我想念的东西,或者这里是否藏有Jet SQL怪癖??? 它所作用的表是: ID – autonumber primary key Store – Text

  • 问题内容: 我正在经历一些正在维护的查询,并且程序员向我输入了“似乎1 = 1”的查询,这些查询似乎总是评估为true。 这有好处吗? 这个问题不是这个问题的答案。 子句: 没有编程或if语句将an和推入其中。直接查询。 如果您可以取消关闭它,我想知道是否有一个目的,以便在不需要时可以重写并删除1 = 1。 问题答案: 它是动态查询吗?有时在基于可选参数构建动态查询时很有用。

  • 本文向大家介绍SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?相关面试题,主要包含被问及SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 (1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 (2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。 因此非相关子查询比相关子查

  • 我是GraphQL的新手,我正试图做一个突变来从我的数据库中删除一篇文章,但我不知道如何删除。我使用Node.js,猫鼬和GraphQL。 这是我的模式的变异。 这是我在调用API删除文章时使用的查询。 我做错了什么? 我收到一个错误的400请求。消息:“无法查询类型为“变异”的字段“删除”

  • 此查询由Django ORM使用RAWSQL生成: 这是一个错误 1242-子查询返回超过1行 这是子查询的结果 我读了MYSQL文档,但我不明白为什么返回两行会有问题。我试过很多替代方法。 问题出在哪里?