Tenho uma dúvida se existe um comando SQL para medir o tempo gasto para fazer a consulta SQL. Segue um estudo de caso onde faço um exemplo. Se alguém souber compartilha aqui
Em um QUANT de 976 funcionarios
SELECT COUNT(*) FROM FUNCIONARIOS;
+----------+
| COUNT(*) |
+----------+
| 976 |
+----------+
Sendo distruibuido da seguinte maneira
SELECT SEXO, COUNT(*) FROM FUNCIONARIOS GROUP BY SEXO;
+-----------+----------+
| SEXO | COUNT(*) |
+-----------+----------+
| Feminino | 491 |
| Masculino | 485 |
+-----------+----------+
Contando funcionários por departamento; Contando quantos funcionarios tem em cada departamento SELECT COUNT(*), DEPARTAMENTO FROM FUNCIONARIOS GROUP BY DEPARTAMENTO ORDER BY 1; +----------+--------------+ | COUNT(*) | DEPARTAMENTO | +----------+--------------+ | 21 | Filmes | | 36 | Joalheria | | 37 | Música | | 38 | Crianças | | 39 | Ferramentas | | 40 | Esporte | | 41 | Brinquedos | | 43 | Calçados | | 46 | Automotivo | | 46 | Alimentícios | | 46 | Bebês | | 46 | Saúde | | 47 | Industrial | | 47 | Jardim | | 47 | Books | | 48 | Outdoors | | 49 | Games | | 49 | Eletronicos | | 52 | Computadores | | 52 | Lar | | 53 | Roupas | | 53 | Beleza | +----------+--------------+
-- Contando quantos funcionarios tem nos departamentos ROUPAS e FILMES
SELECT DEPARTAMENTO, COUNT(*)AS QUANT FROM FUNCIONARIOS
WHERE DEPARTAMENTO='ROUPAS' OR DEPARTAMENTO='FILMES'
GROUP BY DEPARTAMENTO;
+--------------+-------+
| DEPARTAMENTO | QUANT |
+--------------+-------+
| Roupas | 53 |
| Filmes | 21 |
+--------------+-------+
2 rows in set (0.00 sec)
--Queremos uma consulta que traga os funcionarios que trabalhem
--no departamento de "Filmes" OU no departamento de "Roupas"
--Temos duas opções:
SELECT NOME,DEPARTAMENTO FROM FUNCIONARIOS
WHERE DEPARTAMENTO='ROUPAS' OR DEPARTAMENTO='FILMES'
ORDER BY DEPARTAMENTO;
SELECT NOME,DEPARTAMENTO FROM FUNCIONARIOS
WHERE DEPARTAMENTO='FILMES' OR DEPARTAMENTO='ROUPAS';
-- como temos mais funcionarios no departamento "Roupas" devemos usar
-- a clasula WHERE primeiro com o valor de Departamento "Roupas" já que
-- a condição é OR. Ou seja a primeira opção a performance da consulta é melhor
--(mais rápida)
--Suponhamos agora que o gestor de marketing da empresa pediu a lista das funcionarias
--(AS) = FEMININO que trabalhem no departamento de filmes OU no departamento lar.
--Ele necessita enviar um email para as colaboradoras desses dois setores.
-- Contando quantos tem de cada sexo
SELECT COUNT(*) AS QUANT , SEXO FROM FUNCIONARIOS
GROUP BY SEXO ;
+-------+-----------+
| QUANT | SEXO |
+-------+-----------+
| 491 | Feminino |
| 485 | Masculino |
+-------+-----------+
--Fazendo a contagem de funcionarios do departamento Filmes e Lar
SELECT DEPARTAMENTO, COUNT(*) AS QUANT FROM FUNCIONARIOS
WHERE DEPARTAMENTO='FILMES' OR DEPARTAMENTO='LAR'
GROUP BY DEPARTAMENTO
ORDER BY 1;
+--------------+-------+
| DEPARTAMENTO | QUANT |
+--------------+-------+
| Filmes | 21 |
| Lar | 52 |
+--------------+-------+
2 rows in set (0.00 sec)
-- Fazendo a contagem das mulheres do departamento de lar e filmes
SELECT DEPARTAMENTO,SEXO, COUNT(*) AS QUANT FROM FUNCIONARIOS
WHERE SEXO='feminino' AND (DEPARTAMENTO='LAR' OR DEPARTAMENTO ='FILMES')
GROUP BY DEPARTAMENTO
ORDER BY 1;
+--------------+----------+-------+
| DEPARTAMENTO | SEXO | QUANT |
+--------------+----------+-------+
| Filmes | Feminino | 9 |
| Lar | Feminino | 32 |
+--------------+----------+-------+
--Como temos mais mulheres que departamentos e vamos usar na clausula AND
--esse valor vem depois na consulta para verificar o sexo somente depois de
--filtrado o departamentos Filmes e Lar
--na expressão de consulta OR é o contrario já que temos mais mulheres no departamento
--lar que no de filmes
SELECT NOME,EMAIL,DEPARTAMENTO,SEXO FROM FUNCIONARIOS
WHERE (DEPARTAMENTO ='LAR' OR DEPARTAMENTO='FILMES') AND SEXO ='FEMININO'
ORDER BY DEPARTAMENTO;
+------------+-----------------------------------+--------------+----------+
| NOME | EMAIL | DEPARTAMENTO | SEXO |
+------------+-----------------------------------+--------------+----------+
| Little | dlittlecp@usatoday.com | Filmes | Feminino |
| Cooper | icooper85@w3.org | Filmes | Feminino |
| Gordon | egordon7k@yellowbook.com | Filmes | Feminino |
| Warren | awarrenht@addthis.com | Filmes | Feminino |
| Gomez | tgomezm8@ucoz.ru | Filmes | Feminino |
| Knight | dknightm9@quantcast.com | Filmes | Feminino |
| Rice | jricemp@columbia.edu | Filmes | Feminino |
| Bishop | kbishoppi@ovh.net | Filmes | Feminino |
| Walker | swalkerr0@sina.com.cn | Filmes | Feminino |
| Freeman | gfreeman74@bloomberg.com | Lar | Feminino |
| Gibson | bgibson8o@pen.io | Lar | Feminino |
| Crawford | mcrawford8u@parallels.com | Lar | Feminino |
| Campbell | pcampbell9b@istockphoto.com | Lar | Feminino |
| Gonzales | jgonzales9s@sourceforge.net | Lar | Feminino |
| Payne | jpayneal@comsenz.com | Lar | Feminino |
| Cooper | scooperb1@cmu.edu | Lar | Feminino |
| Chapman | schapmanb6@nhs.uk | Lar | Feminino |
| Williams | swilliamsbc@bing.com | Lar | Feminino |
| Morales | dmoralesbl@mit.edu | Lar | Feminino |
| Berry | jberrybr@discuz.net | Lar | Feminino |
| Porter | vporterp@yelp.com | Lar | Feminino |
| Cox | ncoxe1@1und1.de | Lar | Feminino |
| Morris | rmorriseu@yahoo.com | Lar | Feminino |
| Walker | kwalkerf2@vinaora.com | Lar | Feminino |
| Myers | dmyersfq@amazon.com | Lar | Feminino |
| Olson | folsong9@acquirethisname.com | Lar | Feminino |
| Evans | aevansgg@wordpress.org | Lar | Feminino |
| Owens | cowensq@shareasale.com | Lar | Feminino |
| Mendoza | rmendozajl@g.co | Lar | Feminino |
| Ferguson | gfergusonka@geocities.jp | Lar | Feminino |
| Gonzales | rgonzaleskv@meetup.com | Lar | Feminino |
| Burke | eburkel4@newsvine.com | Lar | Feminino |
| Murray | cmurraylx@icio.us | Lar | Feminino |
| Cruz | rcruz10@blinklist.com | Lar | Feminino |
| Washington | jwashington21@squidoo.com | Lar | Feminino |
| Gilbert | hgilbert29@xrea.com | Lar | Feminino |
| Carpenter | rcarpenterov@pagesperso-orange.fr | Lar | Feminino |
| Montgomery | rmontgomery3n@chicagotribune.com | Lar | Feminino |
| Jones | djonesq1@tamu.edu | Lar | Feminino |
| Diaz | sdiaz64@disqus.com | Lar | Feminino |
| Sanchez | tsanchezr7@lycos.com | Lar | Feminino |
+------------+-----------------------------------+--------------+----------+
41 rows in set (0.00 sec)
--Para a consulta de tornar mais rápida pesquisamos primeiro a opção de menos
-- ocorrencia que no caso são os Departamentos (73 ocorrencias=21+52)
-- WHERE (DEPARTAMENTO ='LAR' OR DEPARTAMENTO='FILMES') AND SEXO ='FEMININO'
+--------------+-------+
| DEPARTAMENTO | QUANT |
+--------------+-------+
| Filmes | 21 |
| Lar | 52 |
+--------------+-------+
e depois o Sexo já filtrado (41 = 9+32) mulheres com a expressão WHERE SEXO ='FEMININO'
+--------------+----------+-------+
| DEPARTAMENTO | SEXO | QUANT |
+--------------+----------+-------+
| Filmes | Feminino | 9 |
| Lar | Feminino | 32 |
+--------------+----------+-------+
-- e depois concatenamos com AND SEXO ='FEMININO'
--Se usassemos a query abaixo encontrariamos o mesmo resultado,
--porém com uma pior performance, já que ele ia percorre 491 registros do sexo
--e só depois ia checar a segunda condição
SELECT NOME,EMAIL,DEPARTAMENTO,SEXO FROM FUNCIONARIOS
WHERE SEXO ='FEMININO' AND (DEPARTAMENTO ='LAR' OR DEPARTAMENTO='FILMES')
ORDER BY DEPARTAMENTO;
--Diante da situação minha dúvida é:
--Não existe um comando na consulta do SQL que possamos calcular o tempo
--que o comando gera a consulta?
--Qual seria?
Pergunta
boxpaulomuniz@gmail.com
Tenho uma dúvida se existe um comando SQL para medir o tempo gasto para fazer a consulta SQL. Segue um estudo de caso onde faço um exemplo. Se alguém souber compartilha aqui
Temos uma tabela Funcionarios com as seguintes atributos
DESCRIBE Funcionarios;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| idFuncionario | int | YES | | NULL | |
| nome | varchar(100) | YES | | NULL | |
| email | varchar(200) | YES | | NULL | |
| sexo | varchar(10) | YES | | NULL | |
| departamento | varchar(100) | YES | | NULL | |
| admissao | varchar(10) | YES | | NULL | |
| salario | int | YES | | NULL | |
| cargo | varchar(100) | YES | | NULL | |
| idRegiao | int | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
Em um QUANT de 976 funcionarios
SELECT COUNT(*) FROM FUNCIONARIOS;
+----------+
| COUNT(*) |
+----------+
| 976 |
+----------+
Sendo distruibuido da seguinte maneira
SELECT SEXO, COUNT(*) FROM FUNCIONARIOS GROUP BY SEXO;
+-----------+----------+
| SEXO | COUNT(*) |
+-----------+----------+
| Feminino | 491 |
| Masculino | 485 |
+-----------+----------+
Contando funcionários por departamento;
Contando quantos funcionarios tem em cada departamento
SELECT COUNT(*), DEPARTAMENTO FROM FUNCIONARIOS
GROUP BY DEPARTAMENTO
ORDER BY 1;
+----------+--------------+
| COUNT(*) | DEPARTAMENTO |
+----------+--------------+
| 21 | Filmes |
| 36 | Joalheria |
| 37 | Música |
| 38 | Crianças |
| 39 | Ferramentas |
| 40 | Esporte |
| 41 | Brinquedos |
| 43 | Calçados |
| 46 | Automotivo |
| 46 | Alimentícios |
| 46 | Bebês |
| 46 | Saúde |
| 47 | Industrial |
| 47 | Jardim |
| 47 | Books |
| 48 | Outdoors |
| 49 | Games |
| 49 | Eletronicos |
| 52 | Computadores |
| 52 | Lar |
| 53 | Roupas |
| 53 | Beleza |
+----------+--------------+
-- Contando quantos funcionarios tem nos departamentos ROUPAS e FILMES
SELECT DEPARTAMENTO, COUNT(*)AS QUANT FROM FUNCIONARIOS
WHERE DEPARTAMENTO='ROUPAS' OR DEPARTAMENTO='FILMES'
GROUP BY DEPARTAMENTO;
+--------------+-------+
| DEPARTAMENTO | QUANT |
+--------------+-------+
| Roupas | 53 |
| Filmes | 21 |
+--------------+-------+
2 rows in set (0.00 sec)
--Queremos uma consulta que traga os funcionarios que trabalhem
--no departamento de "Filmes" OU no departamento de "Roupas"
--Temos duas opções:
SELECT NOME,DEPARTAMENTO FROM FUNCIONARIOS
WHERE DEPARTAMENTO='ROUPAS' OR DEPARTAMENTO='FILMES'
ORDER BY DEPARTAMENTO;
+------------+--------------+
| NOME | DEPARTAMENTO |
+------------+--------------+
| Cooper | Filmes |
| Spencer | Filmes |
| Kelley | Filmes |
| Roberts | Filmes |
| Gonzales | Filmes |
| Little | Filmes |
| Snyder | Filmes |
| Gordon | Filmes |
| Griffin | Filmes |
| Warren | Filmes |
| Arnold | Filmes |
| Clark | Filmes |
| Johnson | Filmes |
| Walker | Filmes |
| Elliott | Filmes |
| Weaver | Filmes |
| Gomez | Filmes |
| Knight | Filmes |
| Rice | Filmes |
| Price | Filmes |
| Bishop | Filmes |
| Rose | Roupas |
| Richardson | Roupas |
| Fisher | Roupas |
| Berry | Roupas |
| Arnold | Roupas |
| Jordan | Roupas |
| Wright | Roupas |
| Gonzales | Roupas |
| Young | Roupas |
| White | Roupas |
| Marshall | Roupas |
| Boyd | Roupas |
| Gray | Roupas |
| Gomez | Roupas |
| Williamson | Roupas |
| Richards | Roupas |
| Black | Roupas |
| Kim | Roupas |
| James | Roupas |
| Taylor | Roupas |
| Lynch | Roupas |
| Price | Roupas |
| Greene | Roupas |
| Alexander | Roupas |
| Phillips | Roupas |
| Ortiz | Roupas |
| Reid | Roupas |
| Price | Roupas |
| Hawkins | Roupas |
| Roberts | Roupas |
| Hill | Roupas |
| Oliver | Roupas |
| Murray | Roupas |
| Richards | Roupas |
| Cunningham | Roupas |
| Perkins | Roupas |
| Olson | Roupas |
| Freeman | Roupas |
| James | Roupas |
| Sims | Roupas |
| Nguyen | Roupas |
| Washington | Roupas |
| Ferguson | Roupas |
| Elliott | Roupas |
| Roberts | Roupas |
| Watson | Roupas |
| Kelley | Roupas |
| Day | Roupas |
| Rice | Roupas |
| Marshall | Roupas |
| Burton | Roupas |
| Richards | Roupas |
| Knight | Roupas |
+------------+--------------+
--ou poderemos usar esta outra opção mas a resposta da query é mais lenta
SELECT NOME,DEPARTAMENTO FROM FUNCIONARIOS
WHERE DEPARTAMENTO='FILMES' OR DEPARTAMENTO='ROUPAS';
-- como temos mais funcionarios no departamento "Roupas" devemos usar
-- a clasula WHERE primeiro com o valor de Departamento "Roupas" já que
-- a condição é OR. Ou seja a primeira opção a performance da consulta é melhor
--(mais rápida)
--Suponhamos agora que o gestor de marketing da empresa pediu a lista das funcionarias
--(AS) = FEMININO que trabalhem no departamento de filmes OU no departamento lar.
--Ele necessita enviar um email para as colaboradoras desses dois setores.
-- Contando quantos tem de cada sexo
SELECT COUNT(*) AS QUANT , SEXO FROM FUNCIONARIOS
GROUP BY SEXO ;
+-------+-----------+
| QUANT | SEXO |
+-------+-----------+
| 491 | Feminino |
| 485 | Masculino |
+-------+-----------+
--Fazendo a contagem de funcionarios do departamento Filmes e Lar
SELECT DEPARTAMENTO, COUNT(*) AS QUANT FROM FUNCIONARIOS
WHERE DEPARTAMENTO='FILMES' OR DEPARTAMENTO='LAR'
GROUP BY DEPARTAMENTO
ORDER BY 1;
+--------------+-------+
| DEPARTAMENTO | QUANT |
+--------------+-------+
| Filmes | 21 |
| Lar | 52 |
+--------------+-------+
2 rows in set (0.00 sec)
-- Fazendo a contagem das mulheres do departamento de lar e filmes
SELECT DEPARTAMENTO,SEXO, COUNT(*) AS QUANT FROM FUNCIONARIOS
WHERE SEXO='feminino' AND (DEPARTAMENTO='LAR' OR DEPARTAMENTO ='FILMES')
GROUP BY DEPARTAMENTO
ORDER BY 1;
+--------------+----------+-------+
| DEPARTAMENTO | SEXO | QUANT |
+--------------+----------+-------+
| Filmes | Feminino | 9 |
| Lar | Feminino | 32 |
+--------------+----------+-------+
--Como temos mais mulheres que departamentos e vamos usar na clausula AND
--esse valor vem depois na consulta para verificar o sexo somente depois de
--filtrado o departamentos Filmes e Lar
--na expressão de consulta OR é o contrario já que temos mais mulheres no departamento
--lar que no de filmes
SELECT NOME,EMAIL,DEPARTAMENTO,SEXO FROM FUNCIONARIOS
WHERE (DEPARTAMENTO ='LAR' OR DEPARTAMENTO='FILMES') AND SEXO ='FEMININO'
ORDER BY DEPARTAMENTO;
+------------+-----------------------------------+--------------+----------+
| NOME | EMAIL | DEPARTAMENTO | SEXO |
+------------+-----------------------------------+--------------+----------+
| Little | dlittlecp@usatoday.com | Filmes | Feminino |
| Cooper | icooper85@w3.org | Filmes | Feminino |
| Gordon | egordon7k@yellowbook.com | Filmes | Feminino |
| Warren | awarrenht@addthis.com | Filmes | Feminino |
| Gomez | tgomezm8@ucoz.ru | Filmes | Feminino |
| Knight | dknightm9@quantcast.com | Filmes | Feminino |
| Rice | jricemp@columbia.edu | Filmes | Feminino |
| Bishop | kbishoppi@ovh.net | Filmes | Feminino |
| Walker | swalkerr0@sina.com.cn | Filmes | Feminino |
| Freeman | gfreeman74@bloomberg.com | Lar | Feminino |
| Gibson | bgibson8o@pen.io | Lar | Feminino |
| Crawford | mcrawford8u@parallels.com | Lar | Feminino |
| Campbell | pcampbell9b@istockphoto.com | Lar | Feminino |
| Gonzales | jgonzales9s@sourceforge.net | Lar | Feminino |
| Payne | jpayneal@comsenz.com | Lar | Feminino |
| Cooper | scooperb1@cmu.edu | Lar | Feminino |
| Chapman | schapmanb6@nhs.uk | Lar | Feminino |
| Williams | swilliamsbc@bing.com | Lar | Feminino |
| Morales | dmoralesbl@mit.edu | Lar | Feminino |
| Berry | jberrybr@discuz.net | Lar | Feminino |
| Porter | vporterp@yelp.com | Lar | Feminino |
| Cox | ncoxe1@1und1.de | Lar | Feminino |
| Morris | rmorriseu@yahoo.com | Lar | Feminino |
| Walker | kwalkerf2@vinaora.com | Lar | Feminino |
| Myers | dmyersfq@amazon.com | Lar | Feminino |
| Olson | folsong9@acquirethisname.com | Lar | Feminino |
| Evans | aevansgg@wordpress.org | Lar | Feminino |
| Owens | cowensq@shareasale.com | Lar | Feminino |
| Mendoza | rmendozajl@g.co | Lar | Feminino |
| Ferguson | gfergusonka@geocities.jp | Lar | Feminino |
| Gonzales | rgonzaleskv@meetup.com | Lar | Feminino |
| Burke | eburkel4@newsvine.com | Lar | Feminino |
| Murray | cmurraylx@icio.us | Lar | Feminino |
| Cruz | rcruz10@blinklist.com | Lar | Feminino |
| Washington | jwashington21@squidoo.com | Lar | Feminino |
| Gilbert | hgilbert29@xrea.com | Lar | Feminino |
| Carpenter | rcarpenterov@pagesperso-orange.fr | Lar | Feminino |
| Montgomery | rmontgomery3n@chicagotribune.com | Lar | Feminino |
| Jones | djonesq1@tamu.edu | Lar | Feminino |
| Diaz | sdiaz64@disqus.com | Lar | Feminino |
| Sanchez | tsanchezr7@lycos.com | Lar | Feminino |
+------------+-----------------------------------+--------------+----------+
41 rows in set (0.00 sec)
--Para a consulta de tornar mais rápida pesquisamos primeiro a opção de menos
-- ocorrencia que no caso são os Departamentos (73 ocorrencias=21+52)
-- WHERE (DEPARTAMENTO ='LAR' OR DEPARTAMENTO='FILMES') AND SEXO ='FEMININO'
+--------------+-------+
| DEPARTAMENTO | QUANT |
+--------------+-------+
| Filmes | 21 |
| Lar | 52 |
+--------------+-------+
e depois o Sexo já filtrado (41 = 9+32) mulheres com a expressão WHERE SEXO ='FEMININO'
+--------------+----------+-------+
| DEPARTAMENTO | SEXO | QUANT |
+--------------+----------+-------+
| Filmes | Feminino | 9 |
| Lar | Feminino | 32 |
+--------------+----------+-------+
-- e depois concatenamos com AND SEXO ='FEMININO'
--Se usassemos a query abaixo encontrariamos o mesmo resultado,
--porém com uma pior performance, já que ele ia percorre 491 registros do sexo
--e só depois ia checar a segunda condição
SELECT NOME,EMAIL,DEPARTAMENTO,SEXO FROM FUNCIONARIOS
WHERE SEXO ='FEMININO' AND (DEPARTAMENTO ='LAR' OR DEPARTAMENTO='FILMES')
ORDER BY DEPARTAMENTO;
--Diante da situação minha dúvida é:
--Não existe um comando na consulta do SQL que possamos calcular o tempo
--que o comando gera a consulta?
--Qual seria?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.