【发布时间】:2020-08-25 15:08:57
【问题描述】:
恐怕这个功能可能[还]不存在。我想使用一个跨越 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 中有类似的东西吗?
【问题讨论】:
标签: sql indexing db2 query-performance multi-table