DB2用户定义函数实现多种语言的排序
2007-05-20 16:19:14 来源:WEB开发网核心提示: 查询 4. 规范化的联结SELECT G1.CITY AS CITY1, G2.CITY AS CITY2FROM SORTKEY_GERMAN1 AS G1, SORTKEY_GERMAN2 AS G2WHERE ICU.SORTKEY(G1.CITY, 'LDE_KPHONEB
查询 4. 规范化的联结
SELECT G1.CITY AS CITY1, G2.CITY AS CITY2
FROM SORTKEY_GERMAN1 AS G1, SORTKEY_GERMAN2 AS G2
WHERE ICU.SORTKEY(G1.CITY, 'LDE_KPHONEBOOK_S1') =
ICU.SORTKEY(G2.CITY, 'LDE_KPHONEBOOK_S1')
ORDER BY G1.CITY
结果 4. 规范化的联结
CITY1CITY2
-------------------- --------------------
KölnKoeln
LuebeckLuebeck
NuernbergNürnberg
通过使用排序键(而不是值本身)进行比较,适当地处理了名称中的次要差异。通过选择适当的排序规则,可以根据语言进行比较、忽略大小写和重音差异或者完全忽略某些字符。
在 ORDER BY 子句中,修改一个排序规则的强度来忽略字符属性可能会导致不确定的查询结果次序。例如, ORDER BY ICU.SORTKEY(COLUMN, 'S1') (这里使用的排序规则会忽略大小写和重音)会正确地排列 A < B < C。但是,这个排序规则不区分 “apple”、“Apple” 和 “APPLE”,可能以任意次序返回这些单词。
SORTKEY 产生的值依赖于使用的排序规则。因此,当在谓词中使用 SORTKEY 时,比较的两边要使用完全相同的排序规则。
性能考虑因素
当在查询中引入 UDF 时,它会损害查询的性能。对数据库和查询的设计进行仔细地分析,可以将性能影响最小化。
要考虑的一些因素是:
使用固定的排序规则名
尽可能少使用 SORTKEY
使用生成的列
使用固定的排序规则名
准备要使用的排序规则是一种开销很大的操作。因此,在查询执行时不要改变排序规则名。例如,考虑以下表和查询:
更多精彩
赞助商链接