gpt4 book ai didi

sql - DB2 中 WHERE 子句求值顺序的优化

转载 作者:行者123 更新时间:2023-12-03 17:36:14 25 4
gpt4 key购买 nike

我正在使用两个非常大的表(A 是 ~20E6 行,B 是 ~65E3 行)并且我有非常详细的 where 子句来获取我需要的项目。可以加快速度的一件事是首先评估条目的创建日期(信息可以追溯到 10 年以上,只需要最近 3 年);这将在进行昂贵的字符串处理之前消除大部分数据。有没有办法强制评估 WHERE date > cutoff_date发生在其他条款之前?

这是我的查询的样子。

SELECT A.C1, A.C2, 
SUM(CASE WHEN B.C1 = '[condition 1]' OR ... [condition n] THEN 1 ELSE NULL END)
AS SUM_OF_B_C1, ... [other sums]
FROM DB.TABLE_A A LEFT JOIN DB.TABLE_B AS B ON B.COMMON_COL = A.COMMON_COL
WHERE B.DATE > DATE('[cutoff date]')
AND [complex substr conditions]
AND NOT [other complex string conditions]
GROUP BY A.C1, A.C2

一个问题是我只有数据库的读取权限。通过控制中心查看,似乎A表或B表都没有索引,因此优化路线已出。

您能提供的任何帮助都会很棒;我的小测试查询大约需要 5 分钟,而在产品查询中将大约 20 倍。

最佳答案

试图超越现代查询优化器通常不会很有成效。我认为你应该花时间做另外两件事。

  • 找出哪些业务流程可以让您在
    应该有索引的列。
  • 了解如何运行和解释 EXPLAIN PLAN 的输出.这
    让您使用显示您的代码的数字进行管理
    死慢不是因为你无能,而是因为他们
    DB2 被迫在所有地方进行表扫描。

  • 根本没有索引的表通常由程序生成,以简化查询和报告或减少主数据库服务器的负载。找出谁负责这些程序。和他们交 friend 。给他们买披萨。想想“社会工程”。

    关于sql - DB2 中 WHERE 子句求值顺序的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850435/

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