Cuento registros con consultas como
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%'
Para cada recuento, mysql necesita caminar por la mesa, y este es un gran problema si tiene una tabla larga y numerosas consultas.
Me pregunto si hay una manera de hacer todos los recuentos en una consulta. En este caso, cuando mysql recorre cada fila, procesará todos los recuentos y no será necesario escanear la tabla completa una y otra vez.
mysql
query
query-performance
count
Googlebot
fuente
fuente
Respuestas:
Para obtener un recuento de cada uno de ellos, puede intentar
fuente
Similar a la solución de Aaron, sintaxis más corta:
La expresión LIKE produce un resultado booleano.
TRUE
es 1 ,FALSE
es 0 , por lo queCASE
es redundante aquí.fuente
TINYINT
en esta historia.SUM
toma cualquier tipo de número que sea (incluso flotante) y produce un resultado numérico. PuedeSUM
columnas deTINYINT
tipo para obtener valores en miles, eso no es un problema.TINYINT
en esta historia" quizás no fue una buena oración para comenzar.SUM
función como se menciona aquí no funciona de la misma manera en MS SQL Server. En Transct-SQL soloSUM
se puede usar con columnas numéricas.Si respondo bien a su necesidad, quizás esto sea suficiente:
fuente