leooizepi 1 Denunciar post Postado Agosto 27, 2009 Olá, Eu tenho uma tabela defeitos e nela tem mais de 1 milhão de registros será necessário criar alguns índices para turbinar as consultas, no entanto tenho algumas dúvidas, digamos o seguinte se eu utilizar essas 4 querys abaixo, qual seria o(s) indice(s) que eu deveria criar? Query 1: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo1 = 'a'; ----------------------------- Query2: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo2 = 'b'; ------------------------------ Query3: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo3 = 'b'; -------------------------------- Query4: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo1 = 'a' AND campo2 = 'b' AND campo3 = 'c'; Andei lendo sobre índices e fala sobre criar índices compostos tipo: indice1(campo1,campo2,campo3), daí ele serviria para a Query4, no entanto tenho dúvidas para as querys 1, 2 e 3, pois se eu criar um índice: indice2(campo1) não atrapalharia a query4? OBS: A minha tabela é InnoDB, pois existe muitos usuário fazendo cadastros e atualizações, não tem como ser MyIsam. Agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Agosto 27, 2009 Olá, Eu tenho uma tabela defeitos e nela tem mais de 1 milhão de registros será necessário criar alguns índices para turbinar as consultas, no entanto tenho algumas dúvidas, digamos o seguinte se eu utilizar essas 4 querys abaixo, qual seria o(s) indice(s) que eu deveria criar? Query 1: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo1 = 'a'; ----------------------------- Query2: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo2 = 'b'; ------------------------------ Query3: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo3 = 'b'; -------------------------------- Query4: SELECT campo1, campo2, campo3, campo4 FROM defeitos WHERE campo1 = 'a' AND campo2 = 'b' AND campo3 = 'c'; Andei lendo sobre índices e fala sobre criar índices compostos tipo: indice1(campo1,campo2,campo3), daí ele serviria para a Query4, no entanto tenho dúvidas para as querys 1, 2 e 3, pois se eu criar um índice: indice2(campo1) não atrapalharia a query4? OBS: A minha tabela é InnoDB, pois existe muitos usuário fazendo cadastros e atualizações, não tem como ser MyIsam. Agradeço. Pode criar os indices nos campos: campo1, campo2 e campo3. E sim, pode criar o índice composto do campo1+campo2+campo3 tranquilamente O MySql vai escolher na hora da query qual é o melhor a utilizar, portanto os outros não irão atrapalhar. Mas na duvida pode fazer o teste... Crie dos dois jeitos e faça testes, se não gostar dos resultados depois você exclui os índices se não gostar da performance Use um EXPLAIN na frente de suas consultas que o mysql exibe qual índice utilizou pra fazer a busca, ai você vai ver que um não interfere no outro. Vale lembrar que a criação de índices aloca espaco em disco, e em alguns casos podem até piorar as buscas, em outros não ajudam de nada. Mas para seu caso, pelo tipo das consultas, acho que vai ter um ganho excelente de performance. Abraço e boa sorte Compartilhar este post Link para o post Compartilhar em outros sites