Jump to content


Photo

Select Count (*)


  • Faça o login para participar
5 replies to this topic

#1 fabiano.froes

fabiano.froes

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 08/05/2007, 17:47

Pq qdo eu rodo uma consulta sql do tipo SELECT COUNT (*) e a tabela esta vazia dá erro de sql??

se alguem puder me ajudar.... :rolleyes:
Arley Fabiano Santos Fróes
fabiano@4way.com.br

#2 lifeofgames

lifeofgames

    Ativo

  • Usuários
  • 325 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais

Posted 08/05/2007, 17:53

Qual seria o erro?
Aprendendo a Amar - O Encanto é aqui!
www.aprendendoaamar.com

#3 silici0

silici0

    ?

  • Usuários
  • 902 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:PHP, MySQL, XHTML, CSS, AJAX, JavaScript, Objective-C, Python, Games ... #geek

Posted 08/05/2007, 20:04

Da uma olha no manual:
http://dev.mysql.com...nting-rows.html

De preferência para da proxima falar toda a query para analizarmos onde esta o erro.

Abraços
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .

#4 MACUL

MACUL

    Doutor

  • Usuários
  • 770 posts
  • Sexo:Masculino
  • Localidade:SP

Posted 09/05/2007, 15:25

Teoria
SELECT COUNT (*)
Conta todos os campos da tabela

Utilize
SELECT COUNT (0)

ou
SELECT COUNT ([nome do campo])
Ele irá contar apenas um campo melhorando a performance de seu comando.

Edição feita por: MACUL, 11/05/2007, 17:16.

*************** M ** A ** C ** U ** L ***************

*************************************************

#5 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 10/05/2007, 16:35

Teoria

SELECT COUNT (*)
Conta todos os campos da tabela

Utilize
SELECT COUNT (0)

ou
SELECT COUNT ([nome do campo])
Ele irá contar apenas um campo melhorando a performance de seu comando.


Contar campos? Você quis dizer registros (tuplas)?

Pelo menos no MySQL, o COUNT(*) é otimizado e retorna o número de registros da tabela.

E já COUNT(expr) retorna a quantidade de não-null.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#6 MACUL

MACUL

    Doutor

  • Usuários
  • 770 posts
  • Sexo:Masculino
  • Localidade:SP

Posted 11/05/2007, 17:43

Sim campos e não linhas.
Concordo com você, a explicação não ficou muito boa.

Você informou que no MySQL já é otimizado.

Pelo que me foi passado por DBAs (ORACLE/SQL SERVER) eu não sou um DBA.

Porém é a parte que procuro desenvolver melhor pois quando se trabalha com muita quantidade de registros passa a ter diferença uma informação como essa, desse modo busquei essa informação e estou passando apenas o que me foi ensinado.

create table tabela_exemplo
(
campo1 number,
campo2 number,
campo3 number,
)

o count(*) retorna a contagem de quantide de linhas/tuplas dos campos (campo1, campo2 e campo3)
e o count(campo1) retorna a contagem de quantide de linhas/tuplas do campo1

A princípio questionei essa informação porém sua própria explicação

E já COUNT(expr) retorna a quantidade de não-null.


definiria que realmente o gerenciador de banco de dados realiza a verificação em todos os campos, não ?


Tentei observar a diferença com ferramentas de análise de performance, o que na verdade não consegui provar. Porém pode-se por analogia (um pouco grosseira, concordo), observar que quando executo

select * from tabela_exemplo

tem pior performance do que

select campo1 from tabela_exemplo

OBS : Tuplas, Boa. Não "escutava" essa faz algum tempo.


ALGUNS LINKS SOBRE O ASSUNTO
ORACLE
http://www.lazydba.c...e/0__14374.html

MY SQL
http://www.mysqlperf...nt-vs-countcol/
http://www.dicas-l.c...db_20060925.php

SQL SERVER
http://msdn2.microso...43(SQL.80).aspx
*************** M ** A ** C ** U ** L ***************

*************************************************




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq