精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用DB2 pureXML執行不區分大小寫的高效搜索

數據庫 數據庫運維
本文解釋如何使用 DB2® pureXML™ 創建不區分大小寫的數據庫以及讓 XML 查詢和 XML 索引發揮預期的作用。

根據定義,XML 元素和屬性的值是區分大小寫的。例如,如果搜索值為 “Paris” 的 元素,那么不會找到 “PARIS” 或 “paris”。可以使用 fn:upper-case() 等 XQuery 函數解決這個問題,但是使用這些函數時不能使用 XML 索引,所以性能可能不好。本文解釋如何使用 DB2® pureXML™ 創建不區分大小寫的數據庫以及讓 XML 查詢和 XML 索引發揮預期的作用。用大寫和小寫函數執行不區分大小寫的搜索

下面的示例幫助您更清楚地理解不區分大小寫的搜索。清單 1 定義一個包含一個 INTEGER 列和一個 XML 列的表,并在表中插入 7 行。每行包含一個小的客戶文檔,其中包含 XML 元素

此元素中的值在大小寫方面并不一致。一些值是全大寫的,一些是全小寫的,其他是大小寫混合的(首字母大寫)。如果數據來自不同的應用程序,而這些應用程序采用不同的大小寫數據輸入規則,就會出現這種情況。

清單 1. 示例表和數據

CREATE TABLE customer (id INTEGER, xmldoc XML);

INSERT INTO customer (id, xmldoc)
VALUES (1,'<Customer id="1"><city>PARIS</city></Customer>'),
       (2,'<Customer id="2"><city>Tokyo</city></Customer>'),
       (3,'<Customer id="3"><city>tokyo</city></Customer>'),
       (4,'<Customer id="4"><city>PARIS</city></Customer>'),
       (5,'<Customer id="5"><city>paris</city></Customer>'),
       (6,'<Customer id="6"><city>Delhi</city></Customer>'),
       (7,'<Customer id="7"><city>Paris</city></Customer>'); 

如果一個應用程序查詢這些 XML 文檔,尋找某一城市的客戶,那么很可能需要不區分大小寫的搜索。例如,可能希望找到 Paris 的所有客戶,也就是希望獲取第 1、4、5 和 7 行。但是,如果搜索值 “Paris”,那么只會返回第 7 行。要想獲取所需的所有四行,可以使用 XQuery 函數 fn:upper-case() 把 city 元素值轉換為大寫并與 “PARIS” 做比較。清單 2 中的查詢就采用這種方式,它會返回 Paris 的所有四個客戶。

清單 2. 選擇 Paris 的客戶

    
SELECT id, XMLCAST( XMLQUERY('$XMLDOC/Customer/city') AS VARCHAR(15)) AS city
FROM customer
WHERE XMLEXISTS('$XMLDOC/Customer[fn:upper-case(city) = "PARIS"]');

如果查詢通過一個參數標志提供搜索值,那么這個參數也應該轉換為大寫,見 清單 3。這個參數標志(“?”)的類型為 VARCHAR(15) 并作為變量 “c” 傳遞給 XQuery 謂詞。

清單 3. 使用參數標志選擇客戶

   
SELECT id, XMLCAST( XMLQUERY('$XMLDOC/Customer/city') AS VARCHAR(15)) AS city
FROM customer
WHERE XMLEXISTS('$XMLDOC/Customer[fn:upper-case(city) = fn:upper-case($c)]'
                 PASSING CAST(? AS VARCHAR(15)) AS "c");


圖 1 顯示以上示例查詢的輸出。

圖 1. 示例查詢的結果

如果只查詢少量數據,或者查詢還包含其他選擇性謂詞,使得大寫謂詞只應用于很小的中間結果集,那么這種方式效果還不錯。問題是如果使用包含 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é"

UCA500R1_LEN_S2 導致 "cliche" = "Cliche" < "cliché"

UCA500R1_LEN_S3 導致 "cliche" < "Cliche" < "cliché"

在 DB2 Information Center 中可以找到可以作為 UCA 排序規則名的所有組合(參見 參考資料)。

在不區分大小寫的數據庫中查詢 XML 數據

因為此數據庫使用排序規則名 UCA500R1 和強度級別 2,所以現在可以簡化前面的查詢,去掉 fn:upper-case() 函數(清單 5),就像所有數據都是大寫的一樣。無論搜索字符串是 “Paris” 或 “PARIS” 還是其他任何大小寫組合,結果都是相同的。

清單 5. 選擇 Paris 的客戶

   
SELECT id, XMLCAST( XMLQUERY('$XMLDOC/Customer/city') AS VARCHAR(15)) AS city
FROM customer
WHERE XMLEXISTS('$XMLDOC/Customer[city = "PARIS"]');


圖 2. 示例查詢的結果

 
 

如果通過添加 ORDER BY 子句按提取的 city 值排序,那么結果集仍然是相同的:PARIS、paris 和 Paris 被當作相同的值。

為了高效地查詢此數據,尤其是在表中行數很大的情況下,應該用 XPath /Customer/city 創建一個 XML 索引,見 清單 6:

清單 6. 創建 XML 索引

   
  
CREATE INDEX customer_lang_idx ON test (xmldoc)
       GENERATE KEY USING XMLPATTERN '/Customer/city' AS SQL VARCHAR(15);

現在,如果用 Visual Explain 或 db2exfmt 解釋此查詢,就會看到這個不區分大小寫的搜索使用了索引:

圖 3. 在不區分大小寫的數據庫中查詢 Paris 的所有客戶的 Explain Plan

本節介紹的方法有一個潛在的缺點:整個數據庫中所有表中的所有列中的所有數據都是不區分大小寫的。不可能以區分大小寫的方式處理特定的表或列。要么都區分大小寫,要么都不區分。

注意,不區分大小寫只應用于元素和屬性值,而不應用于標記名本身。XML 標記和路徑表達式仍然是區分大小寫的。例如,XPath 表達式 /Customer/city(小寫 “c”)和 /Customer/City(大寫 “C”)是不同的。后者不匹配示例數據中的任何元素,因為示例數據中的 元素名是小寫的。

性能

在數據庫中使用定制的排序規則可能影響查詢性能,因為在選擇更寬松的 UCA 設置時,匹配的字符串數量可能會增加。換句話說,在不區分大小寫的數據庫中,字符串比較的開銷可能會略微增加。為了查明區分大小寫的和不區分大小寫的數據庫之間的性能差異,我們創建了一個常規數據庫(區分大小寫)和一個不區分大小寫的數據庫。然后,插入來自 TPoX 基準測試的 20,000 個 CustAcc 文檔并在這兩個數據庫中對各種查詢進行測試。

對于只涉及少量到中等數量的行的查詢,兩個測試數據庫之間的性能差異可以忽略不計。我們發現涉及大量行的查詢的性能差異比較大,比如對所有 20,000 個 XML 文檔進行全表掃描并對每個文檔比較字符串。在不區分大小寫的數據庫中,這種查詢花費的時間增加了 5% 到 8%。因此,實現不區分大小寫的搜索需要付出的代價并不大。

結束語

以不區分大小寫的方式搜索 DB 2 數據有多種方法,比如使用生成的列(請參見 參考資料)。盡管這些方法都適合關系數據,但是不適合查詢 XML 數據。以不區分大小寫的方式處理 XML 數據的最佳方法是用定制的 Unicode 排序規則創建數據庫。這使數據庫中的所有字符串值比較都采用不區分大小寫的方式,避免妨礙使用 XML 索引和關系索引。由于不區分大小寫或重音符號,會增加匹配的字符串,但是增加的開銷非常低。

【編輯推薦】

  1. Oracle數據庫中段管理的四個技巧
  2. 最簡單刪除SQL Server中所有數據的方法
  3. DB 2數據庫性能優化技巧詳解
責任編輯:彭凡 來源: IBM
相關推薦

2011-11-30 21:46:24

ibmdwDB2 pureXML

2009-01-18 16:33:09

pureXMLDB2 pureXMLXML

2010-08-20 12:49:49

DB2 pureXML

2009-03-10 10:31:26

DB2XMLpureXML

2009-09-22 12:25:04

ibmdwDB2

2010-08-09 17:52:38

DB2 pureXML

2009-04-17 10:07:42

2009-11-23 19:57:01

ibmdwDB2

2011-08-30 10:10:30

UbuntuLinuxMySQL

2010-11-01 11:45:06

DB2管理頁大小

2010-11-03 11:26:39

DB2表空間

2010-06-04 20:04:10

MySQL數據庫大小寫

2010-09-07 16:11:19

執行DB2命令

2010-11-01 17:02:52

DB2頁大小

2010-08-19 13:59:01

DB2命令

2010-11-25 16:09:58

mysql查詢大小寫

2010-07-28 10:13:06

DB2查詢Table

2010-08-26 10:17:31

DB2.NET開發

2011-05-07 10:47:29

Oracle大小寫

2021-06-15 09:39:45

Oracle敏感數據庫
點贊
收藏

51CTO技術棧公眾號

国产精品呻吟| 精品视频在线你懂得| 亚洲丝袜制服诱惑| 97久久天天综合色天天综合色hd| 免费三片在线播放| 久久综合五月婷婷| 欧美伊人久久久久久久久影院 | 涩涩屋成人免费视频软件| 午夜av一区二区| 神马影院我不卡午夜| 97在线公开视频| 一级成人国产| 日韩在线视频网| 国产+高潮+白浆+无码| 日韩中文影院| 午夜影院久久久| 午夜精品区一区二区三| 韩国av永久免费| 蜜臀av性久久久久蜜臀av麻豆| 欧美激情精品久久久久久蜜臀 | 深夜福利视频一区| 蜜臀av在线播放一区二区三区| 久久久久免费精品国产| 亚洲一级片在线播放| 一区二区三区国产好| 在线观看网站黄不卡| 青青青国产在线观看| 伦xxxx在线| 久久精品欧美一区二区三区麻豆 | 最近中文字幕一区二区| 91九色美女在线视频| 亚洲欧洲一区二区三区| 日韩电影免费观看高清完整| 蜜桃视频污在线观看| 国内精品写真在线观看| 国产精品女人网站| 中文字幕超碰在线| 欧美日韩国产一区精品一区| 色偷偷av一区二区三区乱| 中文字幕一区二区三区人妻不卡| 伊人www22综合色| 欧美一区二区在线视频| 777视频在线| 怡红院成人在线| 狠狠综合久久av一区二区小说 | 日韩一区二区三免费高清| 九九九在线观看视频| 中国色在线日|韩| 天天亚洲美女在线视频| 国产91沈先生在线播放| 一区一区视频| 人妻激情偷乱频一区二区三区| 国产一区高清| 欧洲一区二区三区在线| 中文字幕第21页| 欧美大片免费高清观看| 欧美性猛交xxxx免费看久久久 | 国产精品尤物| 91精品国产乱码久久久久久久久| 久久一区二区三| 欧美色图首页| 久久久久久久久国产精品| 久久精品视频8| 亚洲精华国产欧美| 国自在线精品视频| 亚洲精品视频在线观看免费视频| 亚洲美女色禁图| 欧美在线播放视频| 丰满人妻老熟妇伦人精品| 免费日韩一区二区| 日本中文字幕不卡免费| 五月婷婷激情五月| 另类综合日韩欧美亚洲| 91在线视频成人| 亚洲欧美另类综合| 99久久精品国产麻豆演员表| 欧美福利一区二区三区| 岛国最新视频免费在线观看| 亚洲国产激情av| yellow91字幕网在线| 国产欧美va欧美不卡在线| 亚洲视频精品一区| 日本三级视频在线播放| 亚洲六月丁香色婷婷综合久久| 久久综合亚洲精品| 黄色激情在线播放| 91久久精品日日躁夜夜躁欧美| 最近中文字幕一区二区| 国产精品99久久免费| 欧美精品一区二区三区四区| 久久久无码人妻精品一区| 97精品国产福利一区二区三区| 久久夜色精品国产欧美乱| 精品小视频在线观看| 视频一区中文字幕| 亚洲曰本av电影| 欧美一区二区视频| 亚洲视频一二三| 97超碰国产精品| 香蕉久久免费电影| 欧美一区永久视频免费观看| 粉嫩av懂色av蜜臀av分享| 日韩欧美一区免费| 久久91亚洲精品中文字幕| 无码人妻av免费一区二区三区 | 久久人人爽人人| 波多野结衣黄色| 粉嫩嫩av羞羞动漫久久久 | 91青草视频久久| 少妇又色又爽又黄的视频| 国产精品―色哟哟| 成 年 人 黄 色 大 片大 全| 另类一区二区三区| 亚洲精品国精品久久99热| 午夜成人亚洲理伦片在线观看| 在线观看亚洲| 91免费看片网站| 激情综合闲人网| 亚洲国产美女搞黄色| 爱爱爱爱免费视频| 免费看成人哺乳视频网站| 久久在线免费视频| 日韩欧美一级大片| 91麻豆.com| 欧美不卡在线播放| 久久精品九色| 日韩一区二区三区在线播放| 欧美性猛交bbbbb精品| 波多野结衣精品在线| 中文字幕一区二区中文字幕| 免费观看一级欧美片| 精品欧美一区二区久久| 成人在线观看小视频| 免费美女久久99| 欧美日韩一区二区三区在线视频| heyzo高清中文字幕在线| 欧美一级一级性生活免费录像| 国产免费嫩草影院| 三级不卡在线观看| 久久精品中文字幕一区二区三区 | 国产日韩中文在线| av在线资源网| 欧美在线短视频| 伊人网在线视频观看| 亚洲一区久久| 免费成人深夜夜行视频| 麻豆视频在线观看免费网站黄| 日韩欧美亚洲另类制服综合在线| 日本高清不卡免费| 狠狠网亚洲精品| 色中文字幕在线观看| 日韩毛片免费看| 在线日韩av观看| 亚洲免费视频二区| 中文字幕国产一区| 日韩一级免费片| 水蜜桃久久夜色精品一区| 国产精品综合不卡av| 日本暖暖在线视频| 日韩一区二区三区视频| 久久综合成人网| 成人激情免费网站| 玩弄中年熟妇正在播放| 亚洲理论电影片| 国产精品999| 九七电影韩国女主播在线观看| 欧美一区二区网站| 青青草激情视频| 成人一道本在线| 男人日女人bb视频| jlzzjlzz亚洲女人| 成人激情视频在线观看| 性xxxfreexxxx性欧美| 精品国内片67194| 国产成人无码精品久久久久| 久久久久久影视| 欧美一级xxxx| 国产精品九九| 日韩福利一区二区三区| 四虎国产精品免费久久5151| 色综合色综合网色综合| 污污网站免费在线观看| 91成人网在线| 欧美成人精品欧美一级私黄| 91视频在线看| 99re6在线观看| 亚洲国产日本| 亚洲高清精品中出| 超碰精品在线观看| 国产高清在线不卡| 2024最新电影免费在线观看| 日韩成人av网| 国产精品高潮呻吟av| 婷婷综合在线观看| 日本视频在线免费| 成人美女视频在线观看| 日日噜噜噜噜久久久精品毛片| 欧美freesex交免费视频| 精品国产乱码久久久久久蜜柚 | 成人在线免费看片| 亚洲精品在线不卡| 国产日韩欧美视频在线观看| 狠狠色狠狠色综合日日小说| 国产福利视频网站| 97精品国产97久久久久久久久久久久| 在线观看高清免费视频| 国产精品九九| 在线一区日本视频| 深爱激情综合| 国产一区免费在线观看| 成年永久一区二区三区免费视频| 2021国产精品视频| 国产黄a三级三级三级av在线看| 日韩精品小视频| av中文字幕观看| 欧美日韩视频在线观看一区二区三区| 免费一级特黄特色大片| 中文字幕字幕中文在线中不卡视频| 无套内谢大学处破女www小说| 国产一区二区三区四区五区美女| av免费中文字幕| 伊人狠狠色j香婷婷综合| 中文字幕一区综合| av亚洲在线观看| 久久亚裔精品欧美| 99re热精品视频| 亚洲mm色国产网站| 玖玖精品在线| 国产精品久久av| 亚洲精品国产精品国产| 久久久久久亚洲精品| 天堂va在线| 欧美日韩999| 1769免费视频在线观看| 中文字幕不卡在线视频极品| 日本五码在线| 亚洲黄色有码视频| 丰满熟妇人妻中文字幕| 欧美一卡二卡在线| 国产不卡精品视频| 6080国产精品一区二区| 亚洲图片在线播放| 欧美少妇bbb| 中国一区二区视频| 欧美日韩亚洲国产综合| 无码视频在线观看| 91福利视频网站| 亚洲天堂视频网站| 欧美午夜精品久久久久久久| 日韩av大片在线观看| 午夜视黄欧洲亚洲| 日韩视频免费观看高清| 亚洲aⅴ怡春院| 国产成人在线视频观看| 欧美视频在线观看 亚洲欧| 国产免费av一区二区| 欧美视频免费在线观看| 午夜精品免费观看| 欧美亚洲国产一区二区三区va| 欧美激情一区二区三区免费观看| 欧美日韩二区三区| 亚洲综合一区中| 欧美成人精精品一区二区频| 日本激情一区二区| 亚洲欧美激情在线视频| 成年人在线视频免费观看| 久久久91精品国产| 青春草视频在线| 69视频在线播放| 蜜桃成人精品| 亚洲一区二区三区四区视频| 福利片一区二区| 免费国产一区| 天天综合一区| 久久久亚洲国产精品| 视频一区二区三区中文字幕| 五月天中文字幕在线| 国产高清精品在线| 水蜜桃av无码| 国产欧美精品在线观看| 欧美日韩精品一区二区三区视频播放 | 蜜桃精品视频在线| 99热这里只有精品2| 成人一区二区视频| 男人的天堂官网| 一区二区三区精密机械公司| 亚洲第一精品在线观看| 欧美精品一二三四| 日本黄视频在线观看| 中文字幕欧美日韩在线| 另类视频在线| 国产精品色婷婷视频| 北条麻妃一区二区三区在线| 日韩欧美精品久久| 欧美视频亚洲视频| 成年人免费大片| 国产高清精品久久久久| 国产三级短视频| 午夜不卡av在线| 国产欧美日韩综合精品一区二区三区| 日韩av在线电影网| 国产传媒在线播放| 日本中文字幕成人| 999精品视频在这里| 亚洲一区二三| 亚洲一区久久| 亚洲色图欧美另类| 国产精品麻豆欧美日韩ww| 中国一级免费毛片| 欧美一区二区视频观看视频| 国产永久免费高清在线观看| 欧美激情乱人伦一区| 欧美黄页在线免费观看| 鲁丝一区鲁丝二区鲁丝三区| 你懂的视频一区二区| 午夜视频你懂的| 97久久超碰国产精品| 毛片a片免费观看| 欧美精品aⅴ在线视频| 国产高清免费av在线| 69久久夜色精品国产7777| 亚洲综合网站| 自拍偷拍视频在线| 免费高清视频精品| 免费看黄色的视频| 精品国产福利在线| 日本波多野结衣在线| 欧美高清不卡在线| 精品视频在线播放一区二区三区 | 99久久精品免费观看国产| 国产精品久久77777| 香蕉人人精品| www.爱色av.com| 波多野结衣亚洲一区| 国产在线拍揄自揄拍| 日韩免费高清av| 国产在线高清理伦片a| 国产日韩精品在线观看| jvid福利在线一区二区| 黄色三级视频在线| 中文字幕欧美激情| 日批视频免费在线观看| 亚洲欧美精品suv| 亚洲欧美在线成人| 日韩精品第一页| 热久久国产精品| 五月天免费网站| 8v天堂国产在线一区二区| 色欧美激情视频在线| 91精品久久久久久久久久久久久| 日韩一区二区在线| 日本在线播放一区二区| 亚洲人xxxx| 不卡av中文字幕| 欧美激情手机在线视频| 极品尤物一区| 91av资源网| 国产色婷婷亚洲99精品小说| 亚洲熟女综合色一区二区三区| 亚洲精品永久免费| 99热播精品免费| 中文字幕乱码免费| 成人一区在线观看| 亚洲欧美精品一区二区三区| 亚洲人成在线观看| 欧美高清免费| 轻点好疼好大好爽视频| 91色视频在线| 中文字幕人妻一区二区三区视频| 久久伊人精品视频| 成人三级av在线| 久久久免费视频网站| 国产精品区一区二区三| av官网在线观看| 久久久久久久国产精品| 男男gay无套免费视频欧美| 亚洲黄色小视频在线观看| 亚洲美女精品一区| 亚洲欧美综合在线观看| 国产精品爽爽ⅴa在线观看| 欧美成人高清| 国产吞精囗交久久久| 69堂成人精品免费视频| 91九色美女在线视频| 亚洲国产一区二区三区在线| 国产一区999| 99久久精品国产亚洲| 日韩一区二区福利| 久久影院资源站| 尤物国产在线观看| 亚洲妇熟xx妇色黄| 中文字幕在线免费| 国产亚洲精品美女久久久m| 日韩精品电影在线| 久久久久香蕉视频| 永久555www成人免费| 超碰成人97| 国产美女视频免费看| 欧美日韩在线视频一区| 国内外激情在线|