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 / 9982
Accepted
Born Again Geek Girl
Born Again Geek Girl
Asked: 2012-01-01 07:14:52 +0800 CST2012-01-01 07:14:52 +0800 CST 2012-01-01 07:14:52 +0800 CST

Como leio o custo da consulta e é sempre uma porcentagem?

  • 772

Atualmente estou estudando para SQL 70-433 (o exame de Certificação Microsoft) e estou ficando muito confuso sobre a métrica de desempenho "custo da consulta".

De acordo com qualquer documentação que encontrei no Google, o custo da consulta é uma porcentagem e representa a porcentagem de todo o lote ocupado por qualquer parte dele. Isso já me pareceu um pouco estranho, pois estou interessado no mérito absoluto de uma determinada consulta, em vez de seu mérito em relação a outras consultas que aparecem ao lado dela.

Mas então pensei, bem, talvez o que você deve fazer é colocar duas consultas alternativas lado a lado, executá-las como "um lote" e, em seguida, a que tiver um custo inferior a 50% será a vencedora.

Mas a discussão do custo da consulta no Capítulo 6, lição um do SQL 70-433 Training Kit da Microsoft não parece ter qualquer relação com isso.

Aqui está um exemplo: Eles mostram uma consulta contendo duas subconsultas correlacionadas e, em seguida, melhoram-na substituindo as subconsultas por um OUTER APPLY. O resultado: "Esta consulta tem um custo de aproximadamente 76, enquanto o custo da primeira consulta foi o dobro, cerca de 151." Eles melhoram ainda mais a consulta e reduzem o custo de 76 para 3,6. Eles não implicam que esses números sejam porcentagens, mas sim que são números absolutos relacionados à consulta como um objeto autônomo, sem referência a quaisquer outras consultas. E de qualquer forma, como a primeira consulta poderia ter um custo de 151%?

Mais adiante no capítulo, eles mostram uma captura de tela de um plano de execução que tem três partes. O primeiro diz "Custo: 0%", o segundo diz "Custo: 1%" e o último diz "Custo: 99%", mas o texto (do próprio livro) abaixo da captura de tela "O custo desta consulta é 0,56" . Eu estou supondo que eles significam algum outro tipo de custo, mas não consigo encontrar referência a isso em outro lugar.

Alguém pode ajudar? Estou completamente confuso.

sql-server ssms
  • 1 1 respostas
  • 32527 Views

1 respostas

  • Voted
  1. Best Answer
    Martin Smith
    2012-01-01T07:21:10+08:002012-01-01T07:21:10+08:00

    O custo da consulta é relatado nos planos de execução como "custo estimado da subárvore". Esta é uma figura absoluta como 1.5. Conor Cunningham mencionou em uma apresentação do SQLBits que originalmente se referia ao número de segundos necessários para executar na máquina de um funcionário da Microsoft em particular ( "Nick's Machine" ) no SQL Server 7 dias

    insira a descrição da imagem aqui

    mas agora deve ser interpretado como uma medida sem unidade do custo total.

    O plano de execução é uma árvore. Cada iterador na árvore recebe um custo estimado de CPU e um custo estimado de E/S e estes são somados para obter o custo geral (os pesos relativos podem ser ajustados com alguns comandos DBCC não documentados ). O custo estimado da subárvore inclui o custo para o próprio iterador e todos os seus descendentes. Para ver um exemplo das fórmulas de custeio usadas, consulte este artigo .

    Para determinar o custo estimado de uma consulta inteira no SSMS, selecione o iterador raiz (por exemplo, o SELECTiterador) à esquerda do plano gráfico e observe essa métrica na janela de propriedades do SSMS.

    Ao executar várias consultas (no mesmo lote ou não), a porcentagem é calculada somando todos esses valores e calculando a porcentagem conforme o esperado.

    Você deve estar ciente de que, mesmo em planos de execução reais, esse valor de custo é baseado em estimativas e usá-lo para comparar os méritos relativos de duas consultas diferentes pode ser lamentavelmente errado nos casos em que as estimativas são imprecisas.

    • 47

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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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