恐怕这个功能可能还不存在。我想在DB2中使用一个跨越多个表的索引。我知道Oracle和SQL server实现了它们(或多或少有一些选项(,而PostreSQL似乎还没有实现它们。
注意:几周前我问了一个关于PosgreSQL的类似问题。
多表索引对于某些特定查询可能非常有益。
作为参考,以下是Oracle和SQL Server的多表索引示例:
Oracle示例
Oracle可以创建位图连接索引,如下所示:
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';
SQL Server示例
SQL Server可以创建索引视图:
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';
DB2中有类似的东西吗?
Db2(适用于Linux、UNIX和Windows(支持对表进行索引,即只能对单个表进行索引。
该表可以是基于视图的MQT(物化查询表(。这与直接索引多个表不同。
是的,就像在SQL Server中一样,您可以在跨多个表的视图上创建索引。
注意——您必须以一种特殊的方式(称为物化查询表(设置视图才能使其工作。