【发布时间】:2009-07-01 17:19:11
【问题描述】:
我想知道 NULL 值如何影响 SQL Server 2005 中的查询性能。
我有一个类似这样的表(简化):
ID | ImportantData | QuickPickOrder
--------------------------
1 | 'Some Text' | NULL
2 | 'Other Text' | 3
3 | 'abcdefg' | NULL
4 | 'whatever' | 4
5 | 'it is' | 2
6 | 'technically' | NULL
7 | 'a varchar' | NULL
8 | 'of course' | 1
9 | 'but that' | NULL
10 | 'is not' | NULL
11 | 'important' | 5
我正在对它进行这样的查询:
SELECT *
FROM MyTable
WHERE QuickPickOrder IS NOT NULL
ORDER BY QuickPickOrder
所以 QuickPickOrder 基本上是一个用于从较大列表中挑选出一些常用项目的列。它还提供了它们向用户显示的顺序。 NULL 值表示它不会出现在快速选择列表中。
我总是被告知,数据库中的 NULL 值在某种程度上是邪恶的,至少从规范化的角度来看,但它是否可以在 WHERE 约束中过滤掉不需要的行?
使用特定的数值(如 -1 或 0)来表示不需要的项目会更好吗?还有其他选择吗?
编辑: 该示例不能准确地表示实际值与 NULL 的比率。一个更好的示例可能会为每个非 NULL 显示至少 10 个 NULL。表大小可能是 100 到 200 行。这是一个参考表,所以很少更新。
【问题讨论】:
标签: sql sql-server database performance