【发布时间】:2008-09-22 16:07:13
【问题描述】:
据我了解,空值在 DB2 中是不可索引的,因此假设我们有一个巨大的表 (Sales),其中的日期列 (sold_on) 通常是日期,但偶尔(10% 的时间)为空。
此外,让我们假设它是一个我们无法更改的遗留应用程序,因此这些空值会保留在那里并且意味着某些东西(比如说返回的销售额)。
我们可以通过在 sold_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
因为索引是在值上完成的。
我可以索引空值吗?也许通过更改索引类型?索引指标列?
【问题讨论】:
-
理想情况下,如果空值是 0,我希望数据库能够运行,并在搜索树的一个步骤中将它们全部忽略。这似乎没有发生。
标签: sql performance indexing null db2