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 / 1755
Accepted
paweloque
paweloque
Asked: 2011-03-16 06:53:07 +0800 CST2011-03-16 06:53:07 +0800 CST 2011-03-16 06:53:07 +0800 CST

Índices multidimensionais em bancos de dados

  • 772

Quais bancos de dados usam índices multidimensionais reais? O oracle está sempre usando vários índices para obter dados de tabelas ou sempre usará aquele que parece ter a maior seletividade? E quanto a outros dbms?

index database-theory
  • 3 3 respostas
  • 2135 Views

3 respostas

  • Voted
  1. Best Answer
    Leigh Riffel
    2011-03-16T10:09:19+08:002011-03-16T10:09:19+08:00

    O Oracle tem um tipo de índice chamado Bitmap Index, que é descrito como...

    Um índice de banco de dados no qual o banco de dados armazena um bitmap para cada chave de índice em vez de uma lista de rowids.

    Se uma tabela tiver um índice de bitmap ou uma dica for usada, ela poderá usar um plano de acesso de bitmap em índices de árvore B regulares . Os índices de bitmap podem ser unidos, unidos e cruzados.

    Há uma excelente explicação em use-the-index-luke.com , onde inclui as seguintes implementações de combinação de vários índices B-Tree:

    DB2: O DB2 suporta acesso a vários índices em LUW 9r7 (usando um bitmap dinâmico) e em zOS v10 .

    MySQL: O MySQL tem uma otimização de mesclagem de índice a partir da versão 5.0.

    Oracle O banco de dados Oracle usa BITMAP CONVERSIONs para combinar vários índices em tempo real (introduzido no 9i).

    PostgreSQL O PostgreSQL usa bitmaps para combinar vários índices desde a versão 8.1.

    SQL Server SQL Server pode usar vários índices ("Index Intersect") começando com V7.0 usando um algoritmo de hash.

    Veja também esta questão do StackOverflow em que a primeira resposta diz que o SQL Server faz algo semelhante aos índices de bitmap usando a interseção de índices.

    A indexação de bitmap eficiente e flexível para consultas de similaridade complexa é a referência mais próxima que encontrei associando índices de bitmap com a palavra multidimensional. Multidimensional parece ser mais uma forma de usar índices do que um atributo deles.

    • 9
  2. gbn
    2011-03-16T07:13:36+08:002011-03-16T07:13:36+08:00

    O SQL Server pode executar a interseção de índice :

    O otimizador do SQL Server tem muitos algoritmos e operadores para reunir planos de execução reutilizáveis ​​para consultas executadas em um sistema.

    Uma delas é a capacidade de executar interseção e/ou união de índices, o que basicamente significa que ele pode usar vários índices para uma consulta em uma tabela e executar operações de interseção ou união para retornar um conjunto de resultados.

    Ser capaz de usar vários índices em uma tabela permite criar vários índices restritos que o otimizador pode reunir de diferentes maneiras para diferentes planos de consulta.

    Isso, por sua vez, minimiza a necessidade de vários índices especializados, o que minimiza o espaço de armazenamento do índice e o impacto da modificação.

    Além disso, da documentação para recomendações de ajuste de consulta :

    Não use vários aliases para uma única tabela na mesma consulta para simular a interseção de índices. Isso não é mais necessário porque o SQL Server considera automaticamente a interseção de índices e pode fazer uso de vários índices na mesma tabela na mesma consulta. Considere a consulta de amostra:

    SELECT * FROM lineitem  WHERE partkey BETWEEN 17000 AND 17100 AND
    shipdate BETWEEN '1/1/1994' AND '1/31/1994' ```
    

    O SQL Server pode explorar índices nas colunas partkey e shipdate e, em seguida, executar uma correspondência de hash entre os dois subconjuntos para obter a interseção do índice.

    É isto que você quer dizer?

    • 6
  3. bernd_k
    2011-03-16T08:23:09+08:002011-03-16T08:23:09+08:00

    Possivelmente os índices de bitmap do Oracle são o que você está procurando. Tipos de Índice Oracle .

    Acho que permitem a união e a intersecção. Mas admito que não os conheço.

    • 5

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 você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

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

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +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
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +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
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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