DB2是否实现了多表索引



恐怕这个功能可能还不存在。我想在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中一样,您可以在跨多个表的视图上创建索引。

注意——您必须以一种特殊的方式(称为物化查询表(设置视图才能使其工作。

相关内容

  • 没有找到相关文章

最新更新