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 / 11679
Accepted
ahsan
ahsan
Asked: 2010-12-10 10:16:54 +0800 CST2010-12-10 10:16:54 +0800 CST 2010-12-10 10:16:54 +0800 CST

Quando uma varredura de tabela completa é melhor que uma varredura de índice?

  • 772

Quais são alguns cenários (no SQL Server) em que uma verificação de tabela completa é melhor do que uma verificação de índice?

sql-server execution-plan
  • 4 4 respostas
  • 10306 Views

4 respostas

  • Voted
  1. gbn
    2010-12-10T10:24:56+08:002010-12-10T10:24:56+08:00

    Quando o

    • mesa é pequena o suficiente não há diferença prática
    • estatisticamente, você retornaria a maioria das linhas de qualquer maneira

    O 2º caso precisa de qualificação

    • Uma varredura de índice substituirá uma busca de índice se um índice estiver cobrindo
    • Uma busca ou varredura de índice com muitas linhas que requer pesquisas de chave/marcador será cara e uma varredura de tabela poderia ser melhor

    Finalmente

    • Uma varredura de índice e uma varredura de tabela são praticamente as mesmas para índices clusterizados
    • 11
  2. Best Answer
    user529707
    2010-12-10T10:20:21+08:002010-12-10T10:20:21+08:00

    Quando a seletividade de registros é muito alta, a varredura completa da tabela é sempre melhor do que passar pela varredura de índice.

    http://www.techipost.com/single-index-versus-full-table-scan/

    Editado por gbn:

    Por exemplo, o otimizador pode decidir que é mais fácil verificar a tabela/índice clusterizado se isso exigir muitas pesquisas de chave (por exemplo, índice não clusterizado para índices clusterizados para dados não chave).

    Ou você não tem muitos valores distintos nas colunas indexadas

    • 7
  3. marc_s
    2010-12-10T10:20:42+08:002010-12-10T10:20:42+08:00

    Se a mesa

    • é muito pequeno
    • o custo de fazer uma varredura de índice e, em seguida, várias pesquisas de favoritos na tabela base é mais caro do que uma varredura de tabela completa
    • 6
  4. Cade Roux
    2010-12-10T10:21:02+08:002010-12-10T10:21:02+08:00

    Melhor em que sentido?

    O otimizador pode escolher uma varredura de tabela se um índice não estiver cobrindo, porque uma varredura de índice ainda teria que ser aumentada com uma pesquisa de marcador.

    Nesses casos, uma tabela mal indexada não é melhor do que uma tabela não indexada.

    http://www.sqlservercentral.com/articles/Performance+Tuning/bookmarklookups/1899/

    • 4

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 fazer um mysqldump com um banco de dados de uso no dump

    • 4 respostas
  • Marko Smith

    No MySQL Workbench, insira uma nova coluna no "topo" de uma tabela?

    • 4 respostas
  • Marko Smith

    SQL Server - Tabelas temporárias x físicas

    • 3 respostas
  • Marko Smith

    Quando uma varredura de tabela completa é melhor que uma varredura de índice?

    • 4 respostas
  • Marko Smith

    Qual é a diferença entre Shrink Database e File?

    • 3 respostas
  • Marko Smith

    Problema de coleta de lixo Sql FILESTREAM

    • 1 respostas
  • Marko Smith

    Problemas de DBCC do SQL Server 2008

    • 2 respostas
  • Marko Smith

    Como você para, coloca offline e exclui um banco de dados SQL Server em recuperação?

    • 2 respostas
  • Marko Smith

    Como faço para restaurar um banco de dados do SQL Server 2000 para uma instância do SQL Server 2008?

    • 5 respostas
  • Marko Smith

    Desempenho atingido usando CAST em T-SQL

    • 3 respostas
  • Martin Hope
    user481826 Como fazer um mysqldump com um banco de dados de uso no dump 2010-10-29 16:08:59 +0800 CST
  • Martin Hope
    Will A SQL Server - Tabelas temporárias x físicas 2010-07-05 08:46:10 +0800 CST
  • Martin Hope
    NibblyPig Particionamento de tabelas no SQL 2008 - Por quê? 2010-06-30 00:59:23 +0800 CST
  • Martin Hope
    Gnomo Interpretando um plano de execução 2010-09-10 10:31:11 +0800 CST
  • Martin Hope
    ahsan Quando uma varredura de tabela completa é melhor que uma varredura de índice? 2010-12-10 10:16:54 +0800 CST
  • Martin Hope
    Tom DeMille Devo reduzir regularmente meu banco de dados ou pelo menos meu arquivo de log? 2010-04-24 08:19:19 +0800 CST
  • Martin Hope
    Jango Qual é a diferença entre Shrink Database e File? 2010-08-24 10:25:42 +0800 CST
  • Martin Hope
    CrapHands Como você para, coloca offline e exclui um banco de dados SQL Server em recuperação? 2010-12-18 07:12:36 +0800 CST
  • Martin Hope
    Ryan Delucchi Desempenho atingido usando CAST em T-SQL 2010-07-02 15:11:16 +0800 CST
  • Martin Hope
    Manjot SQL 2005: Podemos determinar quanto o trabalho de manutenção do índice de reconstrução pode aumentar os arquivos de log do banco de dados? 2010-08-12 18:40:44 +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