Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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 <> 1També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.
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.
paginação limitando em 10
>
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?
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
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
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 ;)
Alguém tem conhecimento do plugin datatables atuando com paginação no back-end? Estou utilizando ele porém só Jquery tabelando todos os registros após o select.
Qual banco você usa?
Coloca alguma cláusula where e dá o select apenas nos campos que você precisa.. Já diminui bastante =)