[MASOCH-L] Mysql
Lao DanTong
danton at inexo.com.br
Fri Oct 26 23:31:31 -03 2007
On Fri, 26 Oct 2007, Marcos Dutra wrote:
> Obrigado pela ajuda, olha só que interessante, ontem eu fiz uma pesquisa bem
> simples no modo de ver no banco de dados, queria ver o número de venda dos
> vendedores no ano de 2004 no banco geral na tabela vendas, quado fazia essa
> pesquisa travava todos que estavam em outra tabela no mesmo banco chamado
> clientes, tanto para pesquisa como para alteração até o fim dessa pesquisa.
> O select está abaixo e é feito por um programa em delphi.
>
> select count(*) as total from vendas where func = "RAPHAEL" and
> left(datahora,10) = "2004-01-01"
humm, isto dá uma pesquisa linear, por causa dessa função
left(datahora,10), que é praticamente equivalente a um like. (p.ex.
datahora like '2004-%'). func é uma chave? datahora é uma chave também?
datahora é do tipo 'datetime' ou do tipo 'varchar'?
> Pelo que eu entendi o cara que montou o programa queria fazer a pesquisa da
> data de 2004 de cada vendedor para um relatório, ele estava fazendo com um
> like mas trocou depois com o left, mas ainda não entendi do porque isso
> afeta outras tabelas nada relacionado. Essa tabela tem mais de 1,3GB de
> dados.
pode ser que func seja uma 'foreign key' apontando para uma outra tabela.
> Além disso tem outras pesquisas também que eu vou verificar. Sobre os
> indices criei os índices, realmente ajuda mas ainda estão esquisitos, queria
> saber tb se a mudança do MyISAM para o INNODB faz alguma diferença
> signicativa, aqui os programas todos fazem like e deixa a pesquisa pesada e
> não temos como mudar isso na empresa.
se os programas são todoa a base de 'like', voce estará mais bem servido
com 'grep' e 'awk' do que com um gerenciador de banco de dados. sério. se
a intenção é procurar por ano, então ano tem que ser uma chave. isso é
básico. se a data for do tipo datetime E for uma chave, pode usar o
operador 'between', mas é menos eficiente, porém mais eficiente que a
gambiarra acima.
More information about the masoch-l
mailing list