我有一个每日cron,它计算特定列的非空和非空字符串行的数量,例如:
SELECT count(first_name) FROM users WHERE first_name IS NOT NULL and first_name IS != ''
SELECT count(last_name) FROM users WHERE last_name IS NOT NULL and first_name IS != ''
如果我在一次MySQL调用中执行此操作,性能是否会得到改善?
答案 0 :(得分:0)
对1个查询使用CASE条件
SELECT SUM(CASE WHEN first_name IS NOT NULL and first_name != '' THEN 1 ELSE 0 END),
SUM(CASE WHEN last_name IS NOT NULL and last_name != '' THEN 1 ELSE 0 END) FROM users
答案 1 :(得分:0)
我相信这个查询已经足够了:
COUNT
正如其他开发人员指出的那样,''
甚至会计算SELECT COUNT(DISTINCT first_name)-1, COUNT(DISTINCT last_name)-1 FROM users
空值。
COUNT
这不完全是你所需要的,但如果你确定你有那些可行的空值:
如果您想要返回正确 SELECT SUM(CASE WHEN first_name IS NOT NULL and first_name != '' THEN 1 ELSE 0 END),
SUM(CASE WHEN last_name IS NOT NULL and last_name != '' THEN 1 ELSE 0 END) FROM user
的清晰查询,最好使用@Mihai查询:
{{1}}
但是这个可以在大量唱片上取得很大成绩。