J'ai peur que cette fonctionnalité n'existe pas [encore]. Je voulais utiliser un index qui s'étend sur plusieurs tables dans DB2. Je sais qu'Oracle et SQL Server les implémentent (avec plus ou moins d'options) et que PostreSQL ne semble pas encore les implémenter.

Remarque : j'ai posé une question similaire à propos de PostgreSQL il y a quelques semaines.

Un index multi-table peut être très utile pour certaines requêtes spécifiques.

Pour référence, voici les exemples d ' index multi-tables pour Oracle et SQL Server:

Exemple Oracle

Oracle peut créer des join indexes bitmap , comme indiqué ci-dessous:

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';

Exemple SQL Server

SQL Server peut créer des vues indexées :

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';

Y a-t-il quelque chose de similaire dans DB2?

0
The Impaler 25 août 2020 à 18:08

2 réponses

Meilleure réponse

Db2 (pour Linux, UNIX et Windows) prend en charge index sur les tables, c'est-à-dire que vous ne pouvez indexer qu'une seule table.

La table peut être une MQT (table de requête matérialisée) qui pourrait être basée sur une vue. Ceci est différent de l'indexation directe de plusieurs tables.

3
data_henrik 25 août 2020 à 15:18

Oui, comme dans SQL Server, vous pouvez créer des index sur des vues qui s'étendent sur plusieurs tables.

Remarque - vous devez configurer la vue d'une manière spéciale (appelée table de requête matérialisée) pour qu'elle fonctionne.

0
Hogan 25 août 2020 à 15:13