AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 343875
Accepted
Vansh Patel
Vansh Patel
Asked: 2024-11-27 13:34:59 +0800 CST2024-11-27 13:34:59 +0800 CST 2024-11-27 13:34:59 +0800 CST

O tempo de consulta aumentará?

  • 772

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.

mysql
  • 2 2 respostas
  • 61 Views

2 respostas

  • Voted
  1. Best Answer
    Bill Karwin
    2024-11-28T05:54:30+08:002024-11-28T05:54:30+08:00

    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 .

    • 4
  2. Phill W.
    2024-11-27T20:47:28+08:002024-11-27T20:47:28+08:00

    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.

    • 1

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve