Goo*_*bot 14 mysql performance query count query-performance
我用查询来计算记录
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%'
Run Code Online (Sandbox Code Playgroud)
对于每一个计数,mysql都需要遍历整个表,如果表很长,查询很多,这是一个大问题。
我想知道是否有一种方法可以在一个查询中进行所有计数。在这种情况下,当mysql遍历每一行时,它会处理所有计数,而无需一遍又一遍地扫描整个表。
Aar*_* W. 27
要计算您可以尝试的每一个
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`;
Run Code Online (Sandbox Code Playgroud)
Shl*_*ach 17
类似于 Aaron 的解决方案,更短的语法:
SELECT
SUM(col1 LIKE '%something%') AS count1,
SUM(col1 LIKE '%another%') AS count2,
SUM(col1 LIKE '%word%') AS count3
FROM `table1`
Run Code Online (Sandbox Code Playgroud)
LIKE 表达式产生一个布尔结果。TRUE
是1,FALSE
是0,所以CASE
这里是多余的。
归档时间: |
|
查看次数: |
94962 次 |
最近记录: |