WEB开发网
开发学院数据库DB2 用DB2 pureXML执行不区分大小写的高效搜索 阅读

用DB2 pureXML执行不区分大小写的高效搜索

 2009-03-04 16:38:23 来源:WEB开发网   
核心提示: 如果只查询少量数据,或者查询还包含其他选择性谓词,用DB2 pureXML执行不区分大小写的高效搜索(3),使得大写谓词只应用于很小的中间结果集,那么这种方式效果还不错,这决定在字符串排序或比较时是否考虑大小写或重音符号,在 清单 4 中使用强度级别 2,问题是如果使用包含 fn:uppe

如果只查询少量数据,或者查询还包含其他选择性谓词,使得大写谓词只应用于很小的中间结果集,那么这种方式效果还不错。问题是如果使用包含 fn:upper-case() 函数的谓词,就不会使用 DB2 中的 XML 索引。因此,这种方式不适用于大量数据。

要想避免使用 fn:upper-case() 函数并利用 XML 索引加快查询,就需要创建不区分大小写的数据库。

创建不区分大小写的 DB2 数据库

DB2 从 Version 9.5 Fixpack 1 开始支持感知地区的 Unicode 排序规则。这使我们能够忽略大小写和/或重音符号。要想创建对于所有字符串比较不区分大小写的数据库,需要使用排序规则 UCA500R1,见 清单 4。

清单 4. 创建不区分大小写的数据库

CREATE DATABASE testdb
USING CODESET UTF-8 TERRITORY US
COLLATE USING UCA500R1_LEN_S2; 

字符串 UCA500R1_LEN_S2 究竟意味着什么?UCA500R1 指定此数据库使用基于 Unicode 5.0.0 标准的默认 Unicode Collation Algorithm(UCA)。因为默认的 UCA 不能同时覆盖 Unicode 支持的每种语言的排序规则序列,所以可以使用可选属性定制字符的次序。属性以下划线(_)分隔。UCA500R1 关键字加上所有属性构成一个 UCA 排序规则名。

清单 4 中使用的排序规则名包含两个属性:LEN 和 S2。LEN 是 L(语言)和 EN(英语的 ISO 639-1 语言编码)的组合。第二个属性 S2 指定强度级别,这决定在字符串排序或比较时是否考虑大小写或重音符号。在 清单 4 中使用强度级别 2,所以 “PARIS” 和 “paris” 是相等的。下面是其他有效值的示例:

UCA500R1_LEN_S1 导致 "cliche" = "Cliche" = "cliché"

上一页  1 2 3 4 5  下一页

Tags:DB pureXML 执行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接