我计算带有查询的记录,例如
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%something%' SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%another%' SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%word%'
对于每个计数,mysql 需要遍历整个表,如果表很长,查询很多,这是一个大问题。
我想知道是否有一种方法可以在一个查询中计算所有计数。在这种情况下,当mysql遍历每一行时,它会处理所有的计数,不需要一遍又一遍地扫描整个表。
要计算每个您可以尝试的计数
SELECT COUNT(CASE WHEN `col1` LIKE '%something%' THEN 1 END) AS count1, COUNT(CASE WHEN `col1` LIKE '%another%' THEN 1 END) AS count2, COUNT(CASE WHEN `col1` LIKE '%word%' THEN 1 END) AS count3 FROM `table1`;