[MASOCH-L] Mysql

Juliano Primavesi - Cyberweb Networks juliano at cyberweb.com.br
Fri Oct 26 21:59:52 -03 2007


Marcos,

Se tuas queries usam like, os indices nao vao funcionar. Voce deve 
utilizar indices para pesquisas "exatas" (com =).

Ex: select * from cidades where cidade= "porto alegre" and rua like 
'%joao%';

Neste caso eu insiro um indice para cidade
create index Otimizacao1 on cidades(cidade);

Sempre que voce tiver um campo like, ou uma operação 
(md5,substr,concat,etc) dentro do where, pode até criar um indice para 
aquela tarefa, mas ele nao vai nem ser usado.

Se tiver usando subqueries, crie indices para elas tambem.

O explain ajuda muito nisso, pois ele te diz quantos campos estão sendo 
pesquisados para retornar determinado resultado. Antes de inserir um 
indice, verifica com explain quantos campos estao sendo retornados sem o 
indice e, depois da adicao do indice, quantos "sobraram". Já vi muita 
tabela reduzir de ... 200 mil registros para 10 e a consulta ficar 
ultra-rápida. Claro, SEM LIKE.

Juliano

Marcos Dutra escreveu:
> 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"
>
> 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.
> 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.
>
> Vou fazer testes também com o NOLOCK para ver se há ganhos de performance,
> re respondendo a quem me ajudou em alguns selects tem join sim, mas como eu
> só cuido do servidor preciso ver coim o programador depois o selects
> certinho.
>
> Muito obrigado por enquanto
> Abraços
> Marcos Dutra
>
>
>
> On 10/26/07, Juliano Primavesi - Cyberweb Networks <juliano at cyberweb.com.br>
> wrote:
>   
>> Humberto,
>>
>> Sleep é uma conexão em aberto que nao foi finalizada por algum motivo.
>> Sleeps com mais de 3000s e gerados por um servidor web são killados por
>> um sistema de monitoramento nosso para não ficarem pendurando conexão no
>> servidor de banco.
>>
>> Normalmente é gerado por uma aplicação web que não fecha a conexão com o
>> banco.
>>
>> Juliano
>>
>> Humberto Sartini escreveu:
>>     
>>> Olá,
>>>
>>>    Aproveitando o assunto, gostaria de saber qual o entendimento de
>>> vocês referentes aos processos "sleeps" mostrados durante um "show
>>> processlist". Lendo documentação verifiquei que em muitos casos o
>>> problema está na concepção da programação, e em outros o problemas
>>> pode estar no WebServer. Dessa forma existem três frentes de batalha:
>>> Aplicação, WebServer e otimização do Mysql.
>>>
>>>    Quais as opiniões dos participantes da lista ?
>>>
>>> Links:
>>> http://dev.mysql.com/doc/refman/5.0/en/thread-commands.html
>>>
>>>       
>> http://www.mysqlperformanceblog.com/2007/02/08/debugging-sleeping-connections-with-mysql/
>>     
>>>       
>> __
>> masoch-l list
>> https://eng.registro.br/mailman/listinfo/masoch-l
>>
>>     
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l
>
>
> -------------------------------------------------------------------------
> Esta mensagem foi verificada pelo sistema KingNoSpam (versao 1.4.2)
> Assinatura: !DSPAM:4722364250327277080517!
> Resultado: INOCENTE
> 	
> Para reportar este e-mail como SPAM, clique aqui: http://webmail.cyberweb.com.br/retrain.php?sigG22364250327277080517&class=spam&user=juliano@cyberweb.com.br
>   




More information about the masoch-l mailing list