达梦数据库能在视图上建索引吗

oracle中视图查询很快,移到到达梦库了查询视图非常慢,想建一个索引,没有找到方法,百度没有一条信息,救命🆘

我试了,也不行;
尴尬了;

如果可以换到方式想,你为何要移到答梦上去呢?
oracle不香吗?
如果你觉得它贵,
那mysql不 香吗?

有问题,来 交流呗

视图应该是没法建索引的,索引只作用在表上,而且不同的库,索引方式有所不同。

DM8是支持索引的,具体还是要参考官方文档。

达梦数据库索引创建定义如下:

CREATE [OR REPLACE] [CLUSTER|NOT PARTIAL][UNIQUE | BITMAP| SPATIAL] INDEX <

索引名>

ON [<模式名>.]<表名>(<索引列定义>{,<索引列定义>}) [GLOBAL] [<STORAGE 子句>]

[NOSORT] [ONLINE];

<索引列定义>::= <索引列表达式>[ASC|DESC]

<STORAGE 子句>::=<STORAGE 子句 1>|<STORAGE 子句 2>

<STORAGE 子句 1>::= STORAGE(<STORAGE1 项> {,<STORAGE1 项>})

<STORAGE1 项> ::=

[INITIAL <初始簇数目>] |

[NEXT <下次分配簇数目>] |

[MINEXTENTS <最小保留簇数目>] |

[ON <表空间名>] |

[FILLFACTOR <填充比例>]|

[BRANCH <BRANCH 数>]|

[BRANCH (<BRANCH 数>, <NOBRANCH 数>)]|

[NOBRANCH ]|

[<CLUSTERBTR>]|

[SECTION (<区数>)]|

[STAT NONE]

<STORAGE 子句 2>::= STORAGE(<STORAGE2 项> {,<STORAGE2 项>})

<STORAGE2 项> ::= [ON <表空间名>]|[STAT NONE]



参数

  1. UNIQUE 指明该索引为唯一索引;

  2. BITMAP 指明该索引为位图索引;

  3. SPATIAL 指明该索引为空间索引;

  4. CLUSTER 指明该索引为聚簇索引(也叫聚集索引),不能应用到函数索引中;

  5. NOT PARTIAL 指明该索引为非聚簇索引,缺省即为非聚簇索引;

  6. <索引名> 指明被创建索引的名称,索引名称最大长度128字节;

  7. <模式名> 指明被创建索引的基表属于哪个模式,缺省为当前模式;

  8. <表名> 指明被创建索引的基表的名称;

  9. <索引列定义> 指明创建索引的列定义。其中空间索引列的数据类型必须是DMGEO

包内的空间类型,如ST_GEOMETRY等;

  1. <索引列表达式> 指明被创建的索引列可以为表达式;

  2. GLOBAL 指明该索引为全局索引,仅堆表的水平分区表支持该选项,非水平分区表忽略该选项。 堆表上的PRIMARY KEY会自动变为全局索引;

  3. ASC 递增顺序;

  4. DESC 递减顺序;

  5. <STORAGE子句> 普通表的索引参考<STORAGE子句1>, HUGE表的索引参考<STORAGE子句2>;

  6. <STORAGE子句1>中, BRANCH和NOBRANCH只能用以指定聚集索引;

  7. NOSORT 指明该索引相关的列已按照索引中指定的顺序有序,不需要在建索引时排序,提高建索引的效率。若数据非有序却指定了NOSORT,则在建索引时会报错;

  8. ONLINE 表示支持异步索引,即创建索引过程中可以对索引依赖的表做增、删、改操作。

看你建的视图类型了,普通视图不行,物化视图应该可以,你慢的原因

  1. 如果是普通视图你需要调查下视图的sql语句,看查询计划来优化
  2. 物化视图建索引优先考虑

img

看你要建的视图类型:简单视图,复杂视图,物化视图。
可参考这个【达梦数据库中的视图、序列、索引】链接:https://www.codenong.com/cs105657611/

贴一下oracle和达梦的查询视图的执行计划看看。我帮你看看。另外,在表上建立适当索引,视图会自动使用,提高性能的。
视图上不支持建立索引。

现在不是都用mysql了?

https://www.codenong.com/cs105657611/
这篇文章详细得写了,希望对你有所帮助,有问题在探讨

参考一下呢

达梦数据库简介及索引创建_雍--的博客-CSDN博客 前言:武汉达梦数据库股份有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,致力于数据库管理系统与大数据平台的研发、销售和服务,同时可为用户提供全栈数据产品和解决方案。多年来,达梦公司始终坚持原始创新、独立研发,目前已掌握数据管理与数据分析领域的核心前沿技术,拥有全部源代码,具有完全自主知识产权。在40余年的发展过程中,达梦公司在国产数据库行业持续领跑,先后完成了近60项国家及省市级的科研开发项目,取得了近400项研究成果,皆为国际先进、国内领先水平,有30多项国家、省部级奖励。 https://blog.csdn.net/weixin_45767067/article/details/124882298

参考

如何在达梦数据库中创建索引_sorrolb的博客-CSDN博客 1、直接创建索引可以使用CREATE INDEX语句明确地创建索引,例如在emp表的ename列上创建一个名为emp_ename的索引,该索引使用表空间users。SQL> create index emp_ename on emp(ename) STORAGE(INITIAL 50,NEXT 50,ON USERS);该语句为该索引明确地指定了几个存储位置和一个表空间。如果没有给索引指定存储选项,则INITIAL和NEXT等存储选项会自动使用表空间的默认存储选项。2 、创建聚集索引当建表语 https://blog.csdn.net/weixin_42447367/article/details/108420077?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%BE%BE%E6%A2%A6%E6%95%B0%E6%8D%AE%E5%BA%93%E8%83%BD%E5%9C%A8%E8%A7%86%E5%9B%BE%E4%B8%8A%E5%BB%BA%E7%B4%A2%E5%BC%95%E5%90%97&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-0-108420077.pc_ask&spm=1018.2226.3001.4450