我开始处理多年前使用ACCESS生成的旧数据库 . 所有查询都是使用ACCESS查询向导设计的,它们似乎非常耗时,我希望提高它们的性能 .
所有查询都依赖于至少三个子查询,我想重写SQL代码将它们转换为单个查询 .
在这里你有一个我正在谈论的例子:
这是主要查询:
SELECT Subquery1.pid,Table4.SIB,Subquery1.event,Subquery1.event_date,Subquery2.GGG,Subquery3.status FROM Subquery1 LEFT JOIN((Table4 LEFT JOIN Subquery2 ON Table4.SIB = Subquery2.SIB)LEFT JOIN Subquery3 ON Table4 . SIB = Subquery3.SIB)ON Subquery1.pid = Table4.PID;
此主查询取决于三个子查询:
Subquery1
SELECT Table2.id,Table2.pid,Table2.npid,Table3.event_date,Table3.event,Table3.notes,Table2.other FROM Table2 INNER JOIN Table3 ON Table2.id = Table3.subject_id WHERE((Table2.pid)不是空的)和((表3.event_date)>#XX / XX / XXXX#)AND((表3.event)像“* AAAA”或(Table3.event)=“BBBB”))ORDER BY Table2.pid, Table3.event_date DESC;
Subquery2
SELECT Table1.SIB,IIf(Table1.GGG like“AAA”,“BBB”,IIf(Table1.GGG Like“CCC”,“BBB”,IIf(Table1.GGG Like“DDD”,“DDD”,“EEE” “)))来自表1的AS GGG;
Subquery3
SELECT Table5.SIB,Table5.PID,IIf(Table5.field1 Like“1”,“ZZZ”,IIf(Table5.field1 Like“2”,“ZZZ”,IIf(Table5.field1 Like“3”,“ZZZ” “,IIf(Table5.field1 Like”4“,”HHH“,IIf(Table5.field1 Like”5“,”HHH“,IIf(Table5.field1 like”6“,”HHH“,”UUU“))) )))来自表5的AS SSS;
这将是提高此查询性能并将所有子查询转换为单个语句的最佳方法 .
我可以处理每个子查询,但我很难将它们连接在一起 .
有人能用这段代码帮我一点吗?
非常感谢你,
最好,
1 回答
如果这:
Table5.field1 Like "3"
实际上是如何编写一些子查询(没有实际的狂野字符),你可以通过将其更改为来节省大量时间
Table5.field1="3"