首页 > Linux操作系统 > Linux操作系统 > DM6.0基于成本的优化机制原理


|
应用环境:create table t1(c1 int,c2 int,c3 int,c4 int);
create index it1c1 on t1(c1);
create index it1c2 on t1(c2);
select * from t1 where c1=100 and c2=200; //查询语句 | ||
|
数据量\数据分布 |
DM5.0处理方式(基于规则) |
DM6.0处理方式(基于成本) |
|
1000条记录,c1列与c2列数据分布相同 |
使用it1c1索引进行等值查询 |
使用it1c1索引进行等值查询 |
|
10000万记录,c1列重复率为10%,c2 列值具有唯一性 |
使用it1c1索引进行等值查询 |
使用it1c2索引进行等值查询,有效减少IO |
|
| ||
|
应用环境:create table t1(c1 int,c2 int,c3 int,c4 int);
create index it1c1 on t1(c1);
create index it1c2c3 on t1(c2,c3);
select * from t1 where c1=100 and c2=200 and c3=300; //查询语句 | ||
|
数据量\数据分布 |
DM5.0处理方式(基于规则) |
DM6.0处理方式(基于成本) |
|
1000条数据,c1列与(c2,c3)列数据分布相同 |
使用it1c2c3索引进行等值查询 |
使用it1c2c3索引进行等值查询 |
|
10000条数据,c1列的选择性高于(c2,c3)列 |
使用it1c2c3索引进行等值查询 |
使用it1c1索引进行等值查询,具有更好的选择性 |
|
| ||
|
应用环境:create table t1(c1 int,c2 int);
create table t2(d1 int,d2 int);
select * from t1 where exists (select * from t2 where c1=d1); //查询语句 | ||
|
数据量\数据分布 |
DM5.0处理方式(基于规则) |
DM6.0处理方式(基于成本) |
|
t1包含100条数据
t2包含10000条数据 |
以t1表为驱动表进行hash半连接查询 |
以t1表为驱动表进行hash半连接查询 |
|
t1包含10000条数据
t2包含100条数据 |
以t1表为驱动表进行hash半连接查询 |
以t2表为驱动表进行hash右半连接查询,减少IO |
|
| ||
|
应用环境:create table t1(c1 int,c2 int);
create index it1c1 on t1(c1);
select * from t1 where c1<=10; //查询语句 | ||
|
数据量\数据分布 |
DM5.0处理方式(基于规则) |
DM6.0处理方式(基于成本) |
|
t1包含3条数据 |
使用it1c1进行索引扫描 |
全表扫描 |
|
t1包含1万条记录,其中c1列高重复率(超过50%) |
使用it1c1进行索引扫描 |
全表扫描 |
|
t1包含1万条记录,其中c1列具有高选择性(低于1%重复率) |
使用it1c1进行索引扫描 |
使用it1c1进行索引扫描 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23392679/viewspace-627974/ ,如需转载,请注明出处,否则将追究法律责任。