考虑如下我的 DB2 查询。
Select something from some tables,
(select something from some tables where bhla=bhla
Unionall
select something from some tables where bhla=bhla
union
select something from some tables where bhla=bhla) x
where bhla=bhla
看起来像
select x.something, y.somethingelse from table y,
(select something from some tables where bhla=bhla
Unionall
select something from some tables where bhla=bhla
union
select something from some tables where bhla=bhla) x
where bhla=bhla
我的查询是优化上述查询(更好地使用查询的方式)。
请提供一些有关索引及其使用方法的信息。
我需要优化上面的查询,所以请提出一些建议。
你们能建议如何重新编码下面的 where 子句吗
where
(ID.EXCH_RT <> 0.000000 AND ID.EXCH_RT IS NOT NULL)
AND I.ACT_LOC_TS BETWEEN ( :Param_290_From_Date CONCAT ' 00:00:00.00000') AND ( :Param_300_To_Date CONCAT ' 23:59:59.99999')
无法根据给定的信息进行优化。
通常人们只是被提及如何提问 https://stackoverflow.com/questions/how-to-ask当他们问的问题不够具体时。然而,我看到了很多这样的具体案例:寻求帮助来优化定义不明确的 SQL 查询。所以我想更详细地解决这里的问题。
为什么不能优化这个?
我们不知道任务。优化是你为task,不是一段代码。您的目标是尽可能高效地完成任务。您发布的代码可能是也可能不是最好的方法。如果我们只有代码,而不知道代码的用途,我们就无法评估代码的适当性。
我们不知道表结构。 SQL 的优化很大程度上取决于相关表的结构。涉及哪些列以及哪些数据类型?这些表如何相互关联?在这种情况下,我们甚至不知道涉及多少张表,因为某些查询作用于“某些表”。
我们不知道数据。每张桌子有多大?考虑下面的示例查询。优化了吗?答案是,一切都取决于数据。如果table1
很小并且table2
很大,这将是优化查询的好方法。然而,如果table1
是巨大的并且table2
很小,这将是一个非常糟糕的查询设计,会浪费大量时间。如果不了解任何数据,就无法判断最佳设计。
这取决于您使用的数据库(谢谢沃伦)。在本例中,您指定了 DB2,与许多仅陈述“SQL”的问题相比,这是一个好的开始。但是,了解您正在使用的平台和版本仍然会有所帮助。这使得可用功能存在显着差异。
查询示例:
with complicated as (
select id,
char(foo) || case when bar = 1234 then 'a' else 'c' end || 'baz'
as complicated_field
from table1
)
select * from table2
join complicated on
complicated.id = table2.id and
complicated.complicated_field = table2.some_field
我希望这是有帮助的。如果您提供更多信息,我们将很乐意为您提供进一步帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)