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 / 35694
Accepted
gavenkoa
gavenkoa
Asked: 2013-03-01 10:22:47 +0800 CST2013-03-01 10:22:47 +0800 CST 2013-03-01 10:22:47 +0800 CST

Existe algum motivo para usar o índice para tabelas muito pequenas (até 1000 linhas)?

  • 772

Durante o desenvolvimento do aplicativo, tenho muitas tabelas que armazenam "pequenas" quantidades de dados (geralmente 10-40 valores, id+ valuee às vezes type) que contêm atributos para "objetos", como fresco/podre, vermelho/verde/azul para produtos.

Não coloco esses atributos na tabela de produtos porque os componentes eletrônicos não podem ser frescos, o gás oxigênio não pode ser vermelho e as tabelas não podem ter contagem ilimitada de linhas...

Para armazenar atributos, eu uso pequenas tabelas personalizadas onde 2-3 campos: idpara vincular, namepara mostrar no aplicativo e, às vezes, typese grupos de atributos na mesma categoria.

Os "objetos" primários são vinculados a atributos por meio de tabelas muitos-para-muitos intermediárias.

Existe alguma razão para criar e manter índices para esses "pequenos dicionários" com menos de 1000 itens (geralmente 10-40)?

Meu banco de dados de destino é Oracle, mas espero que responda independente do fornecedor ...

Preencho - não, mas não tenho competências técnicas que justifiquem o meu preenchimento...

index index-tuning
  • 1 1 respostas
  • 2568 Views

1 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2013-03-01T10:44:11+08:002013-03-01T10:44:11+08:00

    Geralmente sim. Na falta de um índice, o padrão de acesso deve inspecionar cada linha, apenas para ver se é aquela que você precisa ou não. O problema não é o tamanho da tabela, mas a simultaneidade. Dependendo do seu nível de isolamento, suas verificações podem ser bloqueadas atrás de transações não confirmadas apenas para aguardar o desbloqueio de linhas que são 'desinteressantes'. Como é garantido que sua verificação 'olhar' para cada linha, cada verificação será bloqueada por trás de qualquer gravação (inserir, excluir ou atualizar). O padrão do Oracle é o isolamento de instantâneo, o que é bom nessa situação (sem bloqueio), mas outros fornecedores adotam como padrão outra coisa, por exemplo. O SQL Server será padronizado para Leitura confirmada, o que bloqueia .

    Com um índice presente, seu padrão de acesso examinará apenas as linhas relevantes (dentro do intervalo de chaves desejado), portanto, a chance estatística pura de encontrar um conflito de bloqueio é bastante reduzida.

    • 15

relate perguntas

  • Como criar várias entradas no índice com base nos campos de uma linha?

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

  • Quanto "Padding" coloco em meus índices?

  • O que significa "índice" em RDBMSs? [fechado]

  • Como criar um índice condicional no MySQL?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • 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

    Conceder acesso a todas as tabelas para um usuário

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

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