MySQL查询的性能问题

时间:2014-01-13 09:30:54

标签: mysql performance count

我正在尝试检索列的非空元素数。 例如,如果你有这样的东西:

enter image description here

并且您想检索应该检索的column_name_1的非空元素的数量1.对于column_name_2,您应该检索2,对于column_name_3,您应该检索0。

我在MySQL数据库中使用此查询:

SELECT 
  COUNT(*) 
FROM
  my_table 
WHERE column_name_1 IS NOT NULL 
  AND [ others conditions ]

但是,您必须为每个列运行此查询,并且对于很多元素(不是所有这些元素),我遇到了一些性能问题。您知道如何更改此查询以提高性能吗?

1 个答案:

答案 0 :(得分:0)

你可以使用mysql的IF

SELECT
    SUM(IF(col1 IS NULL,1,0)) as Col1,
    SUM(IF(col2 IS NULL,1,0)) as Col2,
    SUM(IF(col3 IS NULL,1,0)) as Col3
FROM my_table
WHERE [conditions]

这样就可以将IS NULL条件从选择位置移到