gpt4 book ai didi

java - SQL 查询使用大量资源但没有结果

转载 作者:行者123 更新时间:2023-12-01 16:59:01 24 4
gpt4 key购买 nike

大家好,

我最近不得不从 Access JET 引擎转移到 UcanAccess 引擎,并且我不太熟悉“标准”SQL 查询,不使用“INNER JOIN”功能。我根据之前从有关 DELETE 子句的问题中获得的答案之一编写了以下 SQL 查询,但此查询:

SELECT TreatmentRecords.DateGiven, TreatmentRecords.TimeGiven, SInformation.Surname, SInformation.FirstNames, SInformation.CampusCode, TreatmentRecords.Treatment, TreatmentRecords.[AmountGiven], TreatmentRecords.Diagnosis
FROM TreatmentRecords, SInformation
WHERE (((YEAR(TreatmentRecords.DateGiven)) =2015) AND ((MONTH(TreatmentRecords.DateGiven))=03) AND ((TreatmentRecords.SID)<= 70000))
GROUP BY TreatmentRecords.DateGiven, TreatmentRecords.TimeGiven, SInformation.Surname, SInformation.FirstNames, SInformation.CampusCode, TreatmentRecords.Treatment, TreatmentRecords.[AmountGiven], TreatmentRecords.Diagnosis
ORDER BY TreatmentRecords.DateGiven, SInformation.Surname, SInformation.FirstNames;

似乎什么也没做。我发现它使我的 CPU 转速提高到 96%,RAM 提高到超过 1GB,但这就像一个递归循环。

我想请您知道

a) 查询出了什么问题b) 在什么情况下查询会对您的处理器和内存执行上述操作

此查询(JET 格式)运行得非常好,整个查询应该只返回 100-200 个结果。

任何帮助将不胜感激。谢谢

最佳答案

您的查询在分组之前执行笛卡尔积(交叉连接),因此可能会详细说明大量出现,因为您不要指定TreatmentRecords和SInformation之间的任何连接条件。

例如,如果您有10000条SInformation记录和1000条涉及2015年3月且SID<70000的TreatmentRecords,则将为GROUP BY详细说明1000万条记录。显然这是没有意义的。

即使 Jet 引擎可能会根据最终分组来解释您的意图,并通过不执行整个笛卡尔积来实现替代策略和执行计划,对于大多数情况来说,您的查询很糟糕 DBMS(即Hsqldb)。

重写这个错误的查询将会增加值(value)。

关于java - SQL 查询使用大量资源但没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29180695/

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