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 / 255564
Accepted
Sicilian-Najdorf
Sicilian-Najdorf
Asked: 2019-12-14 01:02:25 +0800 CST2019-12-14 01:02:25 +0800 CST 2019-12-14 01:02:25 +0800 CST

Pesquisas desagradáveis ​​no plano de consulta

  • 772

Eu tenho tentado me livrar de pesquisas caras no meu plano de consulta, mas não consigo entender isso. Eu entendo a ideia de criar um índice de cobertura para eliminar a necessidade de pesquisas, mas não sei como abordá-lo com um plano complicado como este.

Quaisquer idéias sobre como abordar isso seriam realmente apreciadas.

O plano de consulta pode ser encontrado aqui: https://www.brentozar.com/pastetheplan/?id=HyBbQ0eRr

Obrigado

sql-server bookmark-lookup
  • 1 1 respostas
  • 89 Views

1 respostas

  • Voted
  1. Best Answer
    Yannick Liekens
    2019-12-14T01:59:09+08:002019-12-14T01:59:09+08:00

    Portanto, um índice de cobertura é um índice que possui todas as colunas necessárias para sua consulta. Uma pesquisa de chave acontece quando o otimizador usa seu índice para obter dados, mas está faltando uma ou mais colunas, então ele as busca no índice clusterizado.

    Por exemplo, você tem uma busca de índice em Table_22 com o índice table_22_promoId_Index. Depois, no plano, você vê que a pesquisa de chave buscou um monte de colunas.

    insira a descrição da imagem aqui

    Se você adicionar todas as colunas da sua lista de saída da pesquisa de chave em seu Table_22_PromoId_Index como colunas incluídas, você deixará de ter uma pesquisa de chave, porque agora ela apenas buscará tudo desse índice, sem precisar de informações extras do seu cluster índice
    Então você pode repetir isso para os outros

    Colunas de saída

    Eu não sei como abordá-lo com um plano complicado como este.

    Dê um passo de cada vez, escolha uma pesquisa e tente corrigi-la, depois vá para a próxima.
    Além disso, como você está selecionando muitas colunas, tente lembrar que fazer índices enormes também tem desvantagens em atualizações/inserções e ocupa espaço de armazenamento, portanto, tome cuidado para não ter muitos índices (tudo depende de como seu caso específico.)

    É também por isso que as pessoas o aconselham a selecionar apenas as colunas que você realmente precisa em vez de tudo, pois isso torna seus índices mais estreitos e fáceis de ajustar.

    Uma leitura útil sobre este tópico : Pesquisas de chaves caras

    O que me confunde é que o Key Lookup contém algo chamado "Predicate" e "Seek Predicate". Eu não vi isso antes e estou um pouco confuso com a explicação no artigo.

    Portanto, um predicado de busca e um predicado em uma pesquisa de chave são os mesmos que em sua busca de índice. O que acontece é que ele buscará os dados de seu índice clusterizado (no caso de um índice chave) usando o predicado Seek. Depois, se ele tiver que filtrar mais esses dados, ele usará o predicado para filtros extras.

    Há uma boa resposta de Joe Obbish explicando muito bem: Diferença entre predicado de busca e predicado

    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

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