Skip to content

索引操作

在数据库中包含了一个用于对表中记录按需排序,从而可以优化查询的特殊对象,它就是索引。索引和常见的书籍的目录用途相似,目录可以帮助读者快速地实现查找功能。同样,数据库中的索引也可以帮助用户在表中快速的查询满足条件的记录。

为了加快记录的定位速度,可以在表上创建必要的索引。一旦表上创建有索引,所有的 DML 语句都将试图利用索引提高其执行速度,但索引不能提高所有 DML 语句的执行速度,只有条件表达式中含有索引键,且表达式适合索引扫描才能发挥索引的作用。若该索引偶尔提高查询效率(使用索引键频率低),或根本不能提高效率,则索引的创建除了给系统平添麻烦而外,别无任何好处。

虚谷数据库提供了 B 树、全文索引等索引方式,其中 B 树索引用于在可比较大小的字段上创建索引,能享受索引好处的表达式形式应是基于关系操作符‘<’‘>’‘<=’‘>=’‘=’的关系表达式,以及非通配符开始的 LIKE 表达式(其形式为 column LIKE ‘xxx%’)。B 树索引允许创建复合索引,即索引键字段数可以超过 1 个,复合索引发挥作用的条件为:索引键字段中的最前面的一个或连续多个字段的表达式应作为“与”式的因子出现在条件表达式中。例如:假定在表的字段 f1、f2、f3 上创建了复合索引,则语句…WHERE f1=? AND f2=? 可以享受索引的好处,而语句…WHERE f2=? AND f3=? 则不能享受索引带来的好处,原因是最前面的 f1 字段未出现在条件表达式中。

全文索引只针对文本类数据类型,如 CHAR、VARCHAR,以及大对象中的文本等,若没有全文索引,则这类数据只能使用 B 树索引。但在对文本进行检索时,通常会以文本中包含有哪些关键词作为检索的条件,传统关系表达式中只有形式为 column LIKE‘%xxx%’的关系表达式能表达查询的意图,并能得到预想的结果。但以该形式的表达式为条件表达式的查询只能使用顺序扫描,即全表扫描。在扫描过程中还要对相关文本字段关键词进行匹配,涉及的数据量和运算强度都非常大。对于巨型表而言,经常性地全文搜索查询会使系统不堪重负。针对以上应用情况,虚谷数据库采用全文索引解决查询性能问题。


说明:

B 树索引和全文索引它们所对应的数据类型不相同。B 树索引用于在可比较大小的字段上创建索引,如 integer 等数值数据类型。B 树索引允许创建复合索引,即索引键字段数可以超过 1 个。全文索引只针对文本类数据类型如:CHAR、VARCHAR,以及大对象中的文本等。