gpt4 book ai didi

mysql - 如果某行已存在于 MySQL 的结果集中,则跳过处理该行

转载 作者:行者123 更新时间:2023-11-30 00:13:14 25 4
gpt4 key购买 nike

我正在处理大数据并尝试优化我的查询。是否可以跳过处理结果集中已存在的那些行?

查看我的查询中的 AHTUNG 评论。

CREATE TEMPORARY TABLE tmp_table AS
SELECT bg2.id, bg1.property4 -- may be select kuf1.id and then pull property4 for each row in result set? id is PK, but property4 isn't indexed
FROM big_table bg2
JOIN correlating_table cor
ON bg1.property4 = cor.id2

-- AHTUNG!: Many JOINs,AND & WHERE statements. But I have no need to do that
-- if bg1.id is already present in result set

JOIN big_table bg2
ON bg1.property4 = cor.id1
WHERE bg1.property1 = bg2.property1 -- AND (in JOIN clause) vs WHEN
AND bg2.property2 = bg2.property2
AND bg1.property2 BETWEEN @from AND @to
AND bg2.another_table_id NOT IN (
SELECT DISTINCT k.id FROM big_table bg
JOIN entities e ON bg.entity_id = e.id
WHERE bg.property4 = bg1.property4 AND bg.property1 = bg1.property1
)
GROUP BY bg2.id, bg1.property4;

最佳答案

有一个常见的误解,认为 SQL 的工作原理是读取查询并逐步进行处理。

事实上,SQL所做的就是读取整个查询并为其生成执行计划。然后,它执行该计划。这意味着查询中的所有连接、分组以及其他逻辑都是执行计划的一部分。数据中值的存在或不存在(通常)不会影响执行计划。

因此,您无法通过单个查询来完成您想要的操作。您可以将逻辑分解为两个单独的查询,一个查询跳过现有的值,另一个查询寻找新值。这可以提高性能,特别是在新值很少并且性能是通过处理大量数据驱动的情况下。或者,如果检查成本太高,则可能会使性能变差。您必须尝试一下,看看系统上的数据会发生什么情况。

关于mysql - 如果某行已存在于 MySQL 的结果集中,则跳过处理该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873687/

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