Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

173
Visualizações
¿PostgreSQL implementa índices de tablas múltiples?

He estado buscando esto durante una semana y me temo que puede que no exista [todavía]. Quería usar un índice que abarque varias tablas en PostgreSQL. Oracle y el servidor SQL parecen implementarlos (con más o menos opciones).

Podría ser bastante útil para algunas búsquedas que necesito implementar.

Como referencia, aquí están los ejemplos de índices de tablas múltiples para Oracle y SQL Server:

Ejemplo de oráculo

Oracle puede crear índices de combinación de mapa de bits , como se muestra a continuación:

 create table dealer ( id int primary key not null, city varchar2(20) not null ); create table car ( id int primary key not null, brand varchar2(20), price int, dealer_id int references dealer (id) ); create bitmap index bix1 on car (d.city, c.brand) from car c, dealer d where d.id = c.dealer_id; select avg(c.price) from dealer d join car c on c.dealer_id = d.id where d.city = 'Chicago' and c.brand = 'Buick';

Ejemplo de servidor SQL

SQL Server puede crear vistas indexadas :

 create table dealer ( id int primary key not null, city varchar(20) not null ); create table car ( id int primary key not null, brand varchar(20), price int, dealer_id int references dealer (id) ); create view v with schemabinding as select d.city, c.brand, c.price, c.dealer_id from dbo.dealer d join dbo.car c on c.dealer_id = d.id; create unique clustered index uix1 on v (city, brand, price); select avg(c.price) from dealer d join car c on c.dealer_id = d.id where d.city = 'Chicago' and c.brand = 'Buick';
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

A partir de la versión actual de PostgreSQL (v 12), un índice puede basarse únicamente en una tabla o vista materializada.

https://www.postgresql.org/docs/current/sql-createindex.html

CREATE INDEX construye un índice en las columnas especificadas de la relación especificada, que puede ser una tabla o una vista materializada.

La sintaxis CREATE INDEX requiere una tabla y solo puede especificarse 1 tabla

CREAR [ÚNICO] ÍNDICE [CONCURRENTEMENTE] [[SI NO EXISTE] nombre] EN [SOLO] table_name [USING method]

nombre de la tabla:
El nombre (posiblemente calificado por esquema) de la tabla que se va a indexar.

La vista materializada es una opción, pero los datos en la vista materializada están obsoletos hasta que actualice los datos.

https://www.postgresql.org/docs/12/sql-creatematerializedview.html

CREAR VISTA MATERIALIZADA define una vista materializada de una consulta. La consulta se ejecuta y se usa para completar la vista en el momento en que se emite el comando (a menos que se use SIN DATOS) y se puede actualizar más tarde usando REFRESH MATERIALIZED VIEW.

Tal vez pueda equilibrarlo automatizando un proceso para ejecutar el comando REFRESH MATERIALIZED VIEW de manera de reducir la probabilidad de datos obsoletos. Por ejemplo, después de grandes importaciones de datos y en intervalos regulares en otros momentos. Pero, si sus datos son lo suficientemente grandes como para requerir indexación, el proceso de actualización y reindexación no será lo suficientemente rápido y, por lo tanto, no podrá ejecutarlo después de cada instrucción CRUD en un escenario OLTP.

En conclusión, lo que busca no existe en PostgreSQL a partir de la v 12.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda