Sou um pouco novato quando se trata de administração de banco de dados, então, vá com calma!
Eu tenho um banco de dados MySQL. No qual há cerca de 100 tabelas. Agora mesmo, cada tabela tem aproximadamente 50 linhas. Então, quando se trata de selecionar uma linha dessas linhas, o tempo de consulta é de cerca de 0,0004 segundos.
Agora, para minha pergunta: Suponha que uma dessas tabelas cresça e tenha cerca de 5 milhões de linhas. Então, se eu quiser selecionar apenas 1 linha dessa tabela, seu tempo de consulta aumentará? Em aproximadamente quanto?
Se sim, o que posso fazer para reduzir o tempo de consulta depois que a tabela crescer?
Um pouco de contexto da tabela: Cada tabela tem cerca de 10 a 11 colunas. Das quais cerca de 4 a 5 são inteiros de comprimento 11, e 1 coluna é longtext e outras são varchar de comprimento 255.
Pense em uma lista telefônica.
Leva mais tempo para procurar um nome em uma lista telefônica de uma cidade grande, com milhares ou milhões de pessoas?
Sim, claro que sim.
Mas dobrar o número de nomes no livro não dobra o tempo que leva para procurar um nome. Não procuramos uma lista telefônica de capa a capa. Tiramos vantagem do fato de que os nomes estão em ordem alfabética.
Pesquisar em um conjunto ordenado pode ser feito muito mais eficientemente do que pesquisar de frente para trás. Começamos no meio, vemos se o nome que estamos procurando está alfabeticamente antes ou depois da entrada no meio, e isso elimina metade do livro em uma etapa.
Então olhamos para o ponto médio na metade que sabemos que contém o nome que estamos pesquisando, e novamente verificamos se o nome está antes ou depois da entrada naquele ponto médio. Novamente, podemos eliminar metade do que resta em uma etapa.
Continue esse método até encontrar o nome. Isso pode exigir dividir a busca pela metade até que haja apenas um nome.
Esta é uma busca por subdivisão binária e leva tantos passos quanto o log-based-2 do número de nomes no livro.
Dobrar o tamanho do livro apenas aumenta o número de etapas em (no máximo) mais uma "redução pela metade".
É isso que os índices fazem por nós. Um livro maior leva mais tempo para ser pesquisado, mas só um pouquinho.
Para saber mais sobre isso, recomendo minha apresentação Como projetar índices, realmente .
Há um vídeo meu fazendo esta apresentação no YouTube https://youtube.com/watch?v=ELR7-RdU9XU .
Aumentará ? Quase certamente.
Em quanto ? Como com todas as coisas, depende.
Se você estiver encontrando linhas por um único valor em um campo indexado exclusivamente, a consulta pode usar um índice (possivelmente o ne sob a Chave Primária) para que o acesso seja rápido .
Se você estiver encontrando linhas por alguma outra maneira menos eficiente (digamos campos varchar/text com curingas iniciais, por exemplo
like "%FRED"
, então a consulta provavelmente fará uma Varredura de Tabela... e ler 5M linhas sequencialmente levará um tempo.Mais importante, só podemos sugerir e adivinhar .
Você pode descobrir definitivamente TESTANDO. (Sim; testar não é só para desenvolvedores!)
Crie você mesmo um banco de dados de "teste", carregue-o com dados [de teste] e experimente .
Veja os Explain Plans para a consulta e então comece a ajustar.
Não há uma "resposta simples" para o ajuste de consultas de banco de dados. Você só precisa entrar lá e experimentar as coisas.