DB2 是否实现了 multi-table 索引?
Does DB2 implement multi-table indexes?
恐怕这个功能可能[还]不存在。我想在 DB2 中使用跨越多个 table 的索引。我知道 Oracle 和 SQL 服务器实现了它们(有或多或少的选项),而 PostreSQL 似乎还没有实现它们。
注意:几周前我问过一个关于 PosgreSQL 的类似问题。
多 table 索引对于某些特定查询可能非常有益。
供参考,这里是 Oracle 和 SQL 服务器的 multi-table index 示例:
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 服务器示例
SQL 服务器可以创建 索引视图:
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 服务器中一样,您可以在跨越多个 table 的视图上创建索引。
注意 -- 您必须以特殊方式设置视图(称为具体化查询 table)才能正常工作。
Db2(适用于 Linux、UNIX 和 Windows)支持 indexes on tables,即您只能索引单个 table.
table 可以是基于视图的 MQT(具体化查询 table)。这与直接索引多个 table 不同。
恐怕这个功能可能[还]不存在。我想在 DB2 中使用跨越多个 table 的索引。我知道 Oracle 和 SQL 服务器实现了它们(有或多或少的选项),而 PostreSQL 似乎还没有实现它们。
注意:几周前我问过一个关于 PosgreSQL 的类似问题。
多 table 索引对于某些特定查询可能非常有益。
供参考,这里是 Oracle 和 SQL 服务器的 multi-table index 示例:
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 服务器示例
SQL 服务器可以创建 索引视图:
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 服务器中一样,您可以在跨越多个 table 的视图上创建索引。
注意 -- 您必须以特殊方式设置视图(称为具体化查询 table)才能正常工作。
Db2(适用于 Linux、UNIX 和 Windows)支持 indexes on tables,即您只能索引单个 table.
table 可以是基于视图的 MQT(具体化查询 table)。这与直接索引多个 table 不同。