trm_gimli 0 Denunciar post Postado Março 9, 2009 Opa... Tenho um banco de dados, relativamente, pequeno, cerca de 20 mil registros, estou enfrentando um certo problema nos ultimos dias, que é a lentidão de resultado das Querys. Eu uso várias tabelas com chave extrangeira, para evitar informações repetidas e por inúmeros outros fatores, sendo isso minha query é esta: SELECT `nt`.`id` FROM `noticias` AS `nt` LEFT JOIN `fontes` AS `ft` ON ft.id = nt.fonte LEFT JOIN `categorias` AS `ct` ON ct.id = ft.categoria WHERE (ct.idioma = '2') ORDER BY `nt`.`data` DESC LIMIT 15 Essa Query demora cerca de 5 segundos para ser executada, problema facilmente resolvido se tirar o Order By, tirando ele, a Query é executa em 0.2 segundos, até sei o porque disso ocorrer, ele varre todos os 25 mil registros e Ordena eles pelo campo data, para depois pegar os Quinze primeiros, agora a dúvida é, teria uma alternativa para sair disso? Para deixar a query um pouco mais rápida? Se alguém puder ajudar iria ser de grande ajuda, Att, Douglas. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Março 10, 2009 taca um index em nt.data Compartilhar este post Link para o post Compartilhar em outros sites
trm_gimli 0 Denunciar post Postado Março 10, 2009 taca um index em nt.data Desculpa, vo te que da uma de Newbie... como assim? Essa tabela já tem uma chave primária que seria o ID, mas tu diz pra "seta" o campo nt.data como INDEX? Se for, teria como explicar, só o porque disso, só pra mim entende mesmo. Agradeço a resposta, Att, Douglas. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Março 10, 2009 alter table noticias add index(`data`) Compartilhar este post Link para o post Compartilhar em outros sites
trm_gimli 0 Denunciar post Postado Março 10, 2009 Vou buscar a resposta do porque, mas problema resolvido, agradeço muito a ajuda! Att, Douglas Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 10, 2009 já que vai sempre buscar uma quantidade de X das mais recentes você pode também criar "tabelas de cache" por exemplo, no momento de cadastrar uma nova noticia, cadastraria o ID nessa "tabela de cache" aí não teria necessidade de ir buscar na tabelas principais onde o volume de dados é muito maior. Compartilhar este post Link para o post Compartilhar em outros sites