【发布时间】:2010-11-03 13:56:19
【问题描述】:
这让我大吃一惊。
我想做的只是在长 varchar 字段上进行基本的字符串比较。
我有一张大约桌子。 1200 万条记录。
如果我查询 MY_FIELD='a string',我得到的计数是 25947,这似乎是正确的。
如果我查询 MY_FIELD!='a string',我得到的计数是 989。
难道这 2 个计数加起来不应该是 12M 的全表大小吗?
【问题讨论】:
这让我大吃一惊。
我想做的只是在长 varchar 字段上进行基本的字符串比较。
我有一张大约桌子。 1200 万条记录。
如果我查询 MY_FIELD='a string',我得到的计数是 25947,这似乎是正确的。
如果我查询 MY_FIELD!='a string',我得到的计数是 989。
难道这 2 个计数加起来不应该是 12M 的全表大小吗?
【问题讨论】:
MY_FIELD 设置为NULL 在这些行中有多少?
a. select count(*) from mytable;
b. select count(*) from mytable where my_field is null;
c. select count(*) from mytable where my_field is not null;
d. select count(*) from mytable where my_field = 'some value';
e. select count(*) from mytable where my_field != 'some value';
NULL 不等于或不等于 any 值,包括NULL,所以我希望d+e 等于c 和b+c 等于a。
【讨论】: