当前位置:  开发笔记 > 数据库 > 正文

为快速搜索DB2索引空值

如何解决《为快速搜索DB2索引空值》经验,为你挑选了1个好方法。

我的理解是null在DB2中是不可索引的,所以假设我们有一个巨大的表(Sales),其日期列(sold_on)通常是一个日期,但偶尔(10%的时间)为null.

此外,让我们假设它是一个我们无法改变的遗留应用程序,因此这些空值保留在那里并且意味着某些东西(假设已经返回的销售额).

我们可以通过在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

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

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



1> Troels Arvin..:

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

所以:我声称DB2在非主键索引中没有NULL问题.

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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有