sql - 可空列的索引

标签 sql database performance oracle indexing

我在可空列上有一个索引,我想选择它的所有值,如下所示:

SELECT e.ename 
FROM   emp e;

在解释计划中,我看到了一个FULL TABLE SCAN(即使是提示也无济于事)

SELECT e.ename 
FROM   emp e
WHERE  e.ename = 'gdoron';

是否使用索引...

我搜索了一下,发现索引中没有空条目,因此第一个查询不能使用索引。

我的问题很简单:为什么索引中没有空条目?

最佳答案

默认情况下,关系数据库会忽略 NULL 值(因为关系模型表示 NULL 表示“不存在”)。因此,索引不存储 NULL 值,因此如果您在 SQL 语句中有 null 条件,相关索引将被忽略(默认情况下)。

但是你可以解决这个问题,检查THISTHIS文章。

关于sql - 可空列的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175591/

相关文章:

database - 让我的文本框查看 LINQ 查询的结果

Python 套接字 I/O 性能与其他语言的比较

java - SQL Server 排序规则以匹配 Java 不区分大小写的 Unicode 比较

mysql - 在 MySQL 中将三个表的多行合并为一行

database - 使用 ModelForm 时强制某些字段的值

swift - 如何根据位置/与用户位置的接近程度有效地检查数据库对象?

MySQL语句,当某列没有结果时如何显示

java - Spring JPA 存储过程具有空值?

JavaScript 执行时间非常慢 - Chrome

javascript - Youtube 嵌入延迟解析