gpt4 book ai didi

MySQL - 来自同一表的 NOT EXISTS/EXISTS 值更快

转载 作者:行者123 更新时间:2023-11-29 16:05:43 33 4
gpt4 key购买 nike

我有 2 个表:tbl1tbl2。我想从 tbl1 返回一行,其中包含以下列:col1col2col3can_be_deleted 有重要项目。这个想法是,can_be_deletedhave_important_items 列是通过在同一个表 tbl2 中搜索而得到的 bool 值(两者)。

SELECT
col1,
col2,
col3,
NOT EXISTS(SELECT 1 FROM tbl2 WHERE mycategory=10 AND status>0 LIMIT 1) AS can_be_deleted,
EXISTS(SELECT 1 FROM tbl2 WHERE mycategory=10 AND type_item>0 AND status>0 LIMIT 1) AS have_important_items
FROM tbl1 WHERE ... LIMIT 1

为了避免以后澄清,tbl2 列是:

  1. mycategory - 对表格内的项目进行分组的值
  2. 状态 - 启用/禁用项目
  3. type_item - 0-不重要,>=1 重要(重要性等级)

问题:我可以编写更快的查询吗?

最佳答案

使用 JOIN 比 EXIST 更快,检查此查询是否解决了您的问题,如果没有,则只需更改条件即可获得结果。“t1.t2_id”是tbl2的外键,将其更改为正确的名称

SELECT
col1,
col2,
col3,
LEFT JOIN tbl2 AS t2 ON t2.id = t1.t2_id
WHERE t2.mycategory = 10
AND t2.status>0
AND t2.type_item>0
FROM tbl1 AS t1 WHERE ... LIMIT 1

关于MySQL - 来自同一表的 NOT EXISTS/EXISTS 值更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55760084/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com