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 、创建聚集索引
当建表语句未指定聚集索引键时,达梦数据库默认的聚集索引键是ROWID。若指定索引键,表中数据都会根据指定索引键排序。
建表后,DM8也可以用创建新聚集索引的方式来重建表数据,并按新的聚集索引排序。
SQL> CREATE CLUSTER INDEX clu_emp ON emp(ename);
建议在建表时就确定聚集索引键,或在表中数据比较少时新键聚集索引,而尽量不要对数据量非常大的表建立聚集索引。
3、 创建唯一索引
索引可以是唯一的或非唯一的,唯一索引可以保证表上不会有两行数据在键列上具有相同的值,非唯一索引不会在键列上施加这个限制。
使用CREATE UNIQUE INDEX语句来创建唯一索引
SQL> CREATE UNIQUE INDEX dept_unique_index ON dept (dname) storage (on users);
用户希望在列上定义UNIQUE完整性约束,达梦数据库可以通过自动地在唯一键上定义一个唯一索引来保证UNIQUE完整性约束。
4 、自动创建与约束相关的唯一索引
达梦数据库可以通过在唯一键或主键上创建一个唯一索引来在表上实施UNIQUE KEY 或PRIMARY KEY完整性约束。
SQL> alter table emp add constraint pk_emp_name primary key(name);
上面语句会自动在表emp的name列上创建一个唯一索引。
5、 创建基于函数的索引
基于函数的索引促进了限定函数或表达式的返回值的查询,该函数或表达式的值被预先计算出来并存储在索引中。
1.创建更强有力的分类,可以用UPPER和LOWER函数执行区分大小写的分类
2.预先计算出计算密集的函数的值,并在索引中将其分类。可以在索引中存储要经常访问的计算密集的函数,当需要访问值时,该值已经计算出来了。可以极大地改善查询的执行性能。
3.增加了优化器执行范围扫描而不是全表扫描的情况的数量
SQL> create index idx on example_tab(column_a + column_b);
SQL> select * from example_tab where column_a + column_b <10;
上面创建的索引是建立在column_a + column_b 之上的,索引优化器可以在下面的查询与语句中使用范围扫描。优化器根据该索引计算查询代价,如果代价最少,优化器就会选择该函数索引,column_a+column_b就不会重复计算。
6、 创建位图索引
位图索引只要针对含有大量相同值得列而创建。位图索引被广泛引用到数据仓库中,创建方式和普通索引一致,对低基数(不同得值很少)得列创建位图索引,能够有效提高基于该列得查询效率。且执行查询语句的WEHER子句中带有AND和OR谓词时,效率更加明显。
SQL> create bitmap index s1 on purchasing.vendor(vendorid);
创建一个位图索引

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐