我有一个查询:检查field =''vs field IS NULL是否有任何速度差异?
SELECT * FROM `apps` WHERE dev_name = '' ORDER BY RAND() LIMIT 10;
现在我正在检查是否为空白dev_name
但它会更快,如果我默认值设置为NULL
,并在SELECT代替NULL
?
我有一个查询:检查field =''vs field IS NULL是否有任何速度差异?
SELECT * FROM `apps` WHERE dev_name = '' ORDER BY RAND() LIMIT 10;
现在我正在检查是否为空白dev_name
但它会更快,如果我默认值设置为NULL
,并在SELECT代替NULL
?
速度不是选择一个和另一个的原因。在你有限的例子中,x = ''
和x IS NULL
可能会执行相同的速度。
NULL
与''
(或0
)应该考虑的是其他形式的测试,以及该列的含义是什么。
例如,如果有“不收费”,那么fee
栏应该是0
还是NULL
? NULL
似乎暗示“不收费”。但是,WHERE fee < 100
比WHERE fee IS NULL OR fee < 100
笨拙,所以我会投票给0
。
COUNT(dev_name)
将计数''
,但不是NULL
。这可能是决定性因素。
等等
一般而言,我会说这是一个微型优化,最好将查询和表结构建模为感觉语义正确的东西。
由于这是一个通用的问题,只要尝试阅读关于SO的其他问题并自行决定。很难说您的具体设置是否会通过任何选项取得成效。如果你想知道肯定,试着为自己做一个基准,这也是很有趣:)
重复http://stackoverflow.com/questions/1106258/mysql-null-vs –
@RobbertvandenBogerd左右的速度哪个答案会谈? – User