为什么搜索空字符串如此之快?

时间:2019-05-09 00:05:40

标签: sql oracle11g

我注意到跑步

select * from cdr_data where rownum < 10 and customer_tag = ''

明显快于

select * from cdr_data where rownum < 10 and customer_tag = 'a'

可能是什么原因?

编辑:使用Oracle 11g。没有条目,其中customer_tag的数据为“ a”。只是要清楚。我正在使用公司工具进行这些查询。

1 个答案:

答案 0 :(得分:1)

以下是Oracle文档(https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements005.htm)的引文:

  

注意:Oracle数据库当前处理具有长度的字符值   零为null。但是,将来可能不会一直如此   版本,并且Oracle建议您不要对待空字符串   与null相同。

您对以下内容的查询:

  

从cdr_data中选择*,其中rownum <10并且customer_tag =''

等效于:

  

从cdr_data中选择*,其中rownum <10,customer_tag为空

一个可能的解释:也许Oracle可以比比较两个字符串更快地进行is null比较。