gpt4 book ai didi

sql - 索引空值以在 DB2 上快速搜索

转载 作者:行者123 更新时间:2023-12-04 20:18:06 30 4
gpt4 key购买 nike

我的理解是空值在 DB2 中不可索引,因此假设我们有一个包含日期列 (sold_on) 的大表 (Sales),该列通常是日期,但偶尔(10% 的时间)为空。

此外,让我们假设它是一个我们无法更改的遗留应用程序,因此这些空值保留在那里并意味着什么(假设返回的销售额)。

我们可以通过在 sell_on 和 total 列上放置索引来快速执行以下查询

Select * from Sales 
where
Sales.sold_on between date1 and date2
and Sales.total = 9.99

但是索引不会使这个查询更快:
Select * from Sales 
where
Sales.sold_on is null
and Sales.total = 9.99

因为索引是在值上完成的。

我可以索引空值吗?也许通过更改索引类型?索引指标列?

最佳答案

您从哪里得到 DB2 不索引 NULL 的印象?我在支持该声明的文档或文章中找不到任何内容。我刚刚使用 IS NULL 限制在一个大表中执行了一个查询,该限制涉及一个包含一小部分 NULL 的索引列;在这种情况下,DB2 肯定使用了索引(通过 EXPLAIN 验证,并通过观察数据库立即响应而不是花时间执行表扫描)。

所以:我声称 DB2 对非主键索引中的 NULL 没有问题。

但正如其他人所写:您的数据的组合方式可能使 DB2 认为使用索引不会更快。或者数据库的统计信息对于所涉及的表不是最新的。

关于sql - 索引空值以在 DB2 上快速搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/115789/

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