在我们的产品中,我们有一个通用的搜索引擎,并试图优化搜索性能。查询中使用的许多表都允许空值。我们是否应该重新设计我们的表以禁止空值进行优化?
我们的产品在 Oracle
和 MS SQL Server
上运行。
最佳答案
在 Oracle
中,NULL
值不被索引,即。 e.这个查询:
SELECT *
FROM table
WHERE column IS NULL
将始终使用全表扫描,因为索引没有覆盖您需要的值。
不仅如此,这个查询:
SELECT column
FROM table
ORDER BY
column
出于同样的原因,也会使用全表扫描和排序。
如果您的值本质上不允许 NULL
,则将该列标记为 NOT NULL
。
关于sql - NULL 值如何影响数据库搜索的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017239/