在检查field =''vs field IS NULL时是否有任何速度差异?

时间:2015-12-16 15:59:39

标签: mysql myisam

我有一个问题:

SELECT * FROM `apps` WHERE dev_name = '' ORDER BY RAND() LIMIT 10;

现在我正在检查空白dev_name但如果我将默认值设置为NULL并在SELECT中使用NULL会更快吗?

2 个答案:

答案 0 :(得分:0)

速度不是选择一个与另一个的原因。在您的有限示例中,x = ''x IS NULL可能会预先形成相同的速度。

NULL''(或0)应考虑的是其他形式的测试,以及该列的含义是什么。

例如,如果“没有费用”,fee列应该是0还是NULLNULL似乎暗示“不收费”。但是,WHERE fee < 100不如WHERE fee IS NULL OR fee < 100笨拙,所以我会投票给0

COUNT(dev_name)将计算'',但不会计入NULL。这可能是决定因素。

答案 1 :(得分:0)

总的来说,我会说这是一个微优化,最好将查询和表格结构建模到感觉语义正确的东西。

由于这是一个通用的问题,只需尝试在此处阅读其他问题并自行决定。很难说你的具体设置是否会通过任何选项获得性能。如果您想确切知道,请尝试为自己制定基准,这也很有趣:)