DM 8索引在执行计划中的操作符

创建表并插入数据

CREATE TABLE TEST_DM.T1(C1 INT,C2 INT);
INSERT INTO TEST_DM.T1 VALUES (1,1);
INSERT INTO TEST_DM.T1 VALUES (2,1);
INSERT INTO TEST_DM.T1 VALUES (3,1);
INSERT INTO TEST_DM.T1 VALUES (1,2);
INSERT INTO TEST_DM.T1 VALUES (2,2);
INSERT INTO TEST_DM.T1 VALUES (3,2);
INSERT INTO TEST_DM.T1 VALUES (1,3);
INSERT INTO TEST_DM.T1 VALUES (2,3);
INSERT INTO TEST_DM.T1 VALUES (3,3);
CREATE INDEX idx_c1 on TEST_DM.T1(c1);
CREATE TABLE TEST_DM.T2(C3 INT primary key, C4 varchar(8));
INSERT INTO TEST_DM.T2 VALUES (1,'x');
INSERT INTO TEST_DM.T2 VALUES (2,'y');
INSERT INTO TEST_DM.T2 VALUES (3,'z');

CSCN 全表扫描

explain SELECT C1, C2
FROM TEST_DM.T1;

在这里插入图片描述

SSCN 二级索引扫描

explain SELECT C1
FROM TEST_DM.T1;

在这里插入图片描述

SSEK 二级索引范围扫描

explain SELECT C1
FROM TEST_DM.T1
WHERE C1=1;

在这里插入图片描述

CSEK 聚簇索引范围扫描

EXPLAIN
SELECT C3
FROM TEST_DM.T2
WHERE C3=1;

在这里插入图片描述

BLUK 回表:根据二级索引查询到rowid,再回到主键索引取出数据

EXPLAIN
SELECT *
FROM TEST_DM.T1
WHERE C1=1;

在这里插入图片描述

一些特殊的例子
rowid上并没有聚簇索引,所以走全表扫描 CSCN

EXPLAIN
SELECT C3
FROM TEST_DM.T2
WHERE ROWID=3;

建表后,没有创建主键(聚簇)索引前,表里会生成rowid为主键的聚簇索引 CSEK

EXPLAIN 
SELECT *
FROM TEST_DM.T1
WHERE ROWID = 1;

重要的理解:主键是聚簇索引的一种,创建聚簇索引时,主键的索引会变非聚簇索引

DROP TABLE IF EXISTS TEST_DM.T1;
CREATE TABLE TEST_DM.T1(C1 INT,C2 INT);
INSERT INTO TEST_DM.T1 VALUES (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3);

手动创建聚簇索引

create cluster index i_index2 on TEST_DM.T1(c2);

当表有主键的时候,可以创建聚簇索引

DROP TABLE IF EXISTS TEST_DM.T1;
CREATE TABLE TEST_DM.T1(C1 INT primary key,C2 INT);
INSERT INTO TEST_DM.T1 VALUES (1,1),(2,1),(3,1);
create cluster index i_index2 on TEST_DM.T1(c2);

手动创建聚簇索引时,主键会变成非聚簇主键
在这里插入图片描述

更多资讯请上达梦技术社区了解:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值