Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Strik

Select muito lento

Recommended Posts

Olá Imasteres!
Estou desenvolvendo um simples cadastro de clientes.

Na tela de listagem dos clientes cadastrados uso uma "datatable" que lista somente os campos "nome", "telefone" e "cidade".

Já tenho cerca de 4.000 registros na tabela e ao fazer o select desses campos já está demorando muito.
Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual banco você usa?

 

Coloca alguma cláusula where e dá o select apenas nos campos que você precisa.. Já diminui bastante =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso MySQL
Já deixei o select menor possível, só seleciono o que realmente necessito, segue:

SELECT codigo_cliente, nome_completo, telefone, cidade FROM tbl_clientes WHERE excluido <> 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também usava o plugin datatable e deparei com o mesmo, interessante que e em tempo real, porem fiz os campos para efetuar o select e usei o like para listar pelos campos necessários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar a clausula "LIMIT" na sua consulta para testes de desempenho, desta forma:

 

"SELECT codigo_cliente, nome_completo, telefone, cidade FROM tbl_clientes WHERE excluido <> 1 LIMIT 0, 10"

 

Isto listará os primeiros 10 registros, e veja se a consulta ainda demora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar a clausula "LIMIT" na sua consulta para testes de desempenho, desta forma:

 

"SELECT codigo_cliente, nome_completo, telefone, cidade FROM tbl_clientes WHERE excluido <> 1 LIMIT 0, 10"

 

Isto listará os primeiros 10 registros, e veja se a consulta ainda demora.

Resgatando poucos registros não há problema algum. Estou tendo problemas devido a quantidade de registros (4.000).

O plugin datatables pega o resultado do SELECT e pagina no client-side. Alguém manja como pode ser feito para paginar os resultados usando o limit no select?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para 4000 mil registros em um select, só criando cache para resolver! =D

 

ou + memoria e + processador para aguentar essa demanda.

 

Pois efetuar essa consulta sem um filtro, da lhe memória.

 

e já começa otimizando a sua query

 

http://dev.mysql.com/doc/refman/4.1/en/query-cache-in-select.html

 

http://phpbrasil.com/artigo/ujoo4P6IuP11/usando-o-sql_cache-para-melhorar-a-performance-do-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui no forum eu postei um sistema de paginação em pdo se vc tiver construido seu sistema em msql normal é só adaptá-lo, procure por paginação pdo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, para 4000 registros por consulta, tudo vai ficar mais lento, principalmente porque consome muito mais memória para trabalhar.

 

Além de memória, tem o tráfego para exibir os resultados, a simples renderização da tela vai influenciar, espero que não utilize o IE rs rs (se for em navegador, vai levar um tempinho a mais), e assim vai...

 

O ideal é sempre limitar os registros utilizando paginação como o pessoal já comentou, como sugestão até no máximo uns 50 registros por página, isto te da margem para trabalhar com mais usuários simultâneos :)

 

E também sempre especificar quais colunas deve se trazer nas consultas, jamais utilizar o " SELECT * " for utilizar poucas colunas da tabela.

 

Acredito que encontre diversos scripts para paginação em mysql ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.