Conto registros com 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 contagem, o mysql precisa percorrer a tabela, e esse é um grande problema se houver uma tabela longa e inúmeras consultas.
Gostaria de saber se existe uma maneira de fazer todas as contagens em uma consulta. Nesse caso, quando o mysql percorrer cada linha, ele processará todas as contagens e não será necessário varrer a tabela inteira repetidamente.
mysql
query
query-performance
count
Googlebot
fonte
fonte
Respostas:
Para obter uma contagem para cada um deles, você pode tentar
fonte
Semelhante à solução de Aaron, sintaxe mais curta:
A expressão LIKE cria um resultado booleano.
TRUE
é 1 ,FALSE
é 0 , entãoCASE
é redundante aqui.fonte
TINYINT
nesta história.SUM
pega qualquer tipo de número (float par) e produz um resultado numérico. Você podeSUM
colunas doTINYINT
tipo para obter valores aos milhares - isso não é um problema.TINYINT
nesta história" talvez não fosse uma boa frase para começar.SUM
função mencionada aqui não funciona da mesma maneira no MS SQL Server. No Transct-SQLSUM
pode ser usado apenas com colunas numéricas.Se eu acertar sua necessidade, talvez isso funcione:
fonte