日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何在Oracle數(shù)據(jù)庫的字段上建立索引

瀏覽:160日期:2023-11-11 19:19:02

當where子句對某一列使用函數(shù)時,除非利用這個簡單的技術強制索引,否則Oracle優(yōu)化器不能在查詢中使用索引。 通常情況下,假如在WHERE子句中不使用諸如UPPER、REPLACE 或SUBSTRD等函數(shù),就不能對指定列建立特定的條件。但假如使用了這些函數(shù),則會出現(xiàn)一個問題:這些函數(shù)會阻礙Oracle優(yōu)化器對列使用索引,因而與采用索引的情況相比較,查詢會花費更多的時間。 慶幸的是,假如在使用函數(shù)的這些列中包含了字符型數(shù)據(jù),可以用這樣一種方法修改查詢語句,以達到強制性使用索引,更有效地運行查詢。這篇文章介紹了涉及的技術,并說明了在兩種典型情況下怎樣實現(xiàn)。 大小寫混合情況 在討論由于函數(shù)修改了列的內容,如何強制使用索引前,讓我們首先看看為什么Oracle優(yōu)化器在這種情況下不能使用索引。假定我們要搜尋包含了大小寫混合的數(shù)據(jù),如在表1中ADDRESS表的NAME列。因為數(shù)據(jù)是用戶輸入的,我們無法使用已經統(tǒng)一改為大寫的數(shù)據(jù)。為了找到每一個名為john的地址,我們使用包含了UPPER子句的查詢語句。如下所示:

SQL> select address from address where upper(name) like 'JOHN'; 在運行這個查詢語句前,假如我們運行了命令"set autotrace on", 將會得到下列結果,其中包含了執(zhí)行過程: ADDRESS cleveland 1 row selected. Execution Plan SELECT STATEMENT TABLE Access FULL ADDRESS 可以看到,在這種情況下,Oracle優(yōu)化器對ADDRESS 表作了一次完整的掃描,而沒有使用NAME 列的索引。這是因為索引是根據(jù)列中數(shù)據(jù)的實際值建立的,而UPPER 函數(shù)已經將字符轉換成大寫,即修改了這些值,因此該查詢不能使用這列的索引。優(yōu)化器不能與索引項比較"JOHN",沒有索引項對應于"JOHN"-只有"john" 。 值得慶幸的是,假如在這種情況下想要強制使用索引,有一種簡便的方法:只要在WHERE 子句中增加一個或多個特定的條件,用于測試索引值,并減少需要掃描的行,但這并沒有修改原來SQL 編碼中的條件。以下列查詢語句為例: SQL> select address from address where upper(name) like 'JO%' AND (name like 'J%' or name like 'j%'); 使用這種查詢語句(已設置AUTOTRACE),可得到下列結果: ADDRESS cleveland 1 row selected. Execution Plan SELECT STATEMENT CONCATENATION TABLE ACCESS BY INDEX ROWID ADDRESS INDEX RANGE SCAN ADDRESS_I TABLE ACCESS BY INDEX ROWID ADDRESS INDEX RANGE SCAN ADDRESS_I 現(xiàn)在,優(yōu)化器為WHERE 子句中AND 聯(lián)結的兩個語句中每一個語句確定的范圍進行掃描----第二個語句沒有引用函數(shù),因而使用了索引。在兩個范圍掃描后,將運行結果合并。 在這個例子中,假如數(shù)據(jù)庫有成百上千行,可以用下列方法擴充WHERE 子句,進一步縮小掃描范圍: select address from address where upper(name) like 'JOHN' AND (name like 'JO%' or name like 'jo%' or name like 'Jo' or name like 'jO' ); 得到的結果與以前相同,但是,其執(zhí)行過程如下所示,表明有4個掃描范圍。 Execution Plan SELECT STATEMENT CONCATENATION TABLE ACCESS BY INDEX ROWID ADDRESS INDEX RANGE SCAN ADDRESS_I TABLE ACCESS BY INDEX ROWID ADDRESS INDEX RANGE SCAN ADDRESS_I TABLE ACCESS BY INDEX ROWID ADDRESS INDEX RANGE SCAN ADDRESS_I TABLE ACCESS BY INDEX ROWID ADDRESSINDEX RANGE SCAN ADDRESS_I 假如試圖進一步提高查詢速度,我們可以在特定的"name like"條件中指明3個或更多的字符。然而,這樣做會使得WHERE子句十分粗笨。因為需要大小寫字符所有可能的組合-joh ,Joh,jOh,joH等等。除此之外,指定一個或兩個字符已足以加快查詢的運行速度了。 現(xiàn)在讓我們看看,當我們引用不同的函數(shù)時,怎樣運用這個基本技術。 使用REPLACE的情況 正如名字不總是以大寫輸入一樣,電話號碼也會以許多格式出現(xiàn): 如 123-456-7890, 123 456 7890,(123)456-7890 等等。 假如在列名為 PHONE_NUMBER中搜尋上述號碼時,可能需要使用函數(shù)REPLACE以保證統(tǒng)一的格式。假如在PHONE_NUMBER列中只包含空格、連字符和數(shù)字,where 子句可以如下所示: WHERE replace(replace(phone_number , '-' ) , ' ' ) = '1234567890' WHERE子句兩次使用REPLACE 函數(shù)去掉了連字符和空格,保證了電話號碼是簡單的數(shù)字串。然而,該函數(shù)阻止了優(yōu)化器在該列使用索引。因此,我們按如下方法修改WHERE子句,以強制執(zhí)行索引。 WHERE replace(replace(phone_number, '-' ) , ' ' ) = '1234567890' AND phone_number like '123% '假如我們知道數(shù)據(jù)中可能包含圓括號,WHERE 子句會稍微復雜一點。我們可以再增加REPLACE 函數(shù)(去掉圓括號、連字符和空格),按如下所示擴充增加的條件: WHERE replace(replace(replace(replace(phone_number , ' - ' ) ,' '), '( ' ) , ' ) ' ) = '1234567890' AND (phone number like ' 123% ' or phone_number like ' (123% ' ) '

該例強調了巧妙地選用WHERE 子句條件的重要性,而且,這些條件不會改變查詢結果。你的選擇應基于完全了解該列中存在的信息類型。在該例中,我們需要知道 PHONE_NUMBER 數(shù)據(jù)中存在幾種不同的格式,這樣,我們能夠修改WHERE 子句而不會影響查詢結果。 正確的條件 以后當你碰到包含CHARACTER 數(shù)據(jù)修改函數(shù)列的WHERE 子句時,應考慮怎樣利用增加一個或兩個特定的條件,迫使優(yōu)化器使用索引。適當?shù)剡x擇一組特定的條件能減少掃描行,并且強制使用索引不會影響查詢結果----但卻提高了查詢的執(zhí)行速度。

相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲视频综合| 日韩成人高清| 午夜久久99| 亚洲国产不卡| 欧美精品自拍| 91成人精品视频| 亚洲国产影院| 欧美不卡高清| 婷婷综合网站| 久久精品国产亚洲一区二区三区| 91欧美精品| 国产乱码精品一区二区亚洲| 国产九九精品| 成人在线免费观看91| 麻豆mv在线观看| 久久精品国产亚洲夜色av网站| 久久电影tv| 国模 一区 二区 三区| 亚洲激情社区| 蜜桃视频一区二区| 欧美一级网址| 久久精品国产亚洲aⅴ | 日韩专区在线视频| 蜜臀av亚洲一区中文字幕| 日韩中文字幕无砖| 国产欧美日韩一区二区三区在线| 国产精品.xx视频.xxtv| 国产精品毛片久久| 国产综合精品一区| 亚洲日本久久| 国产精品1区在线| 成人高清一区| 91国语精品自产拍| 日本不卡一区二区| 久久精品国产福利| 欧美肉体xxxx裸体137大胆| 久久高清免费观看| 亚洲精品亚洲人成在线观看| 国产精品尤物| 蜜桃成人精品| 亚洲区欧美区| 精品久久久网| 激情综合网五月| 日韩欧美中文在线观看| 精品99在线| 麻豆精品蜜桃视频网站| 亚洲国产影院| 91精品国产经典在线观看| 成人国产精品一区二区网站| 国产一区成人| 国产精品二区影院| 在线日韩av| 日韩欧美美女在线观看| 蜜桃视频在线观看一区| 欧美日韩激情| 91精品在线免费视频| 精品视频黄色| 99在线|亚洲一区二区| 国产一精品一av一免费爽爽| 色偷偷色偷偷色偷偷在线视频| 久久xxxx精品视频| 国产精品一区二区三区www| 日韩精品网站| 911亚洲精品| 久久在线免费| 日韩国产欧美在线播放| 日韩中文影院| 97成人在线| 成人午夜精品| 国产精品一区二区三区美女| 女人av一区| 久久久久免费| 日韩久久99| 久久国产成人午夜av影院宅| 日韩黄色在线观看| 成人av动漫在线观看| 国产日韩欧美在线播放不卡| 日韩视频久久| 在线人成日本视频| 91成人福利| 亚洲一区网站| 精品日韩视频| 麻豆国产精品| 欧美影院三区| 国产一区二区色噜噜| 午夜久久av | 伊人网在线播放| 欧美日韩夜夜| 老司机精品久久| 欧美片第1页综合| 久热精品在线| 一区在线视频观看| 精品国模一区二区三区| 国产欧美日韩免费观看| 亚洲欧美日韩在线观看a三区| 天堂中文av在线资源库| 国产日韩欧美在线播放不卡| 国产亚洲精品自拍| 欧美日一区二区| 亚洲va中文在线播放免费| 美腿丝袜亚洲一区| 91福利精品在线观看| 性欧美精品高清| 91精品国产乱码久久久久久久| 精品日韩一区| 国产亚洲精aa在线看| 日韩一区二区三区在线看| 国产一区日韩一区| 精品女同一区二区三区在线观看| 亚洲欧洲av| 男人的天堂亚洲一区| 欧美91精品| 国产91精品对白在线播放| 国产激情在线播放| 久久wwww| 欧美亚洲自偷自偷| 综合亚洲色图| 免费久久99精品国产| 亚洲作爱视频| 亚洲午夜黄色| 日韩中文影院| 欧洲精品一区二区三区| 成人亚洲欧美| 国产中文字幕一区二区三区| 国产激情欧美| 午夜国产精品视频| 亚洲精品一区二区在线看| 激情欧美国产欧美| 欧美久久精品一级c片| 国产精品字幕| 91精品蜜臀一区二区三区在线| 久久三级福利| 久久精品国产99国产精品| 麻豆久久一区| 狂野欧美性猛交xxxx| 国产精品久久久久久久免费软件| 欧美久久精品| 欧美aⅴ一区二区三区视频| 欧美日韩亚洲一区二区三区在线| 欧美综合精品| 国产欧美69| 久久男人av| 水蜜桃久久夜色精品一区| 中文在线а√天堂| 久久久精品日韩| 亚洲精品91| 另类国产ts人妖高潮视频| 亚洲在线免费| 免费精品视频最新在线| 亚洲精品极品| 欧美综合精品| 精品国产成人| 99久久夜色精品国产亚洲1000部| 久久久精品午夜少妇| 国户精品久久久久久久久久久不卡 | 久久xxx视频| 国产乱码午夜在线视频| 欧美日中文字幕| 亚洲婷婷丁香| 国产精品一区二区精品| 国产a亚洲精品| 亚洲性视频h| 亚洲精品在线国产| 欧美黄色一区二区| 日韩欧美一区二区三区在线观看 | 午夜国产精品视频| 日韩精品久久久久久久软件91| 久久这里只有| 久久蜜桃资源一区二区老牛| 男人的天堂久久精品| 国产精品一区二区99| 三上悠亚国产精品一区二区三区| 欧美日韩免费观看一区=区三区 | 中文字幕av亚洲精品一部二部| 国产美女精品视频免费播放软件| 91视频一区| 亚洲高清不卡| 日本免费在线视频不卡一不卡二| 麻豆精品在线视频| 欧美女激情福利| 欧美亚洲三区| 国产福利片在线观看| 亚洲精品在线观看91| 国产美女视频一区二区| 久久精品官网| 91精品在线免费视频| 亚洲电影有码| 午夜电影一区| 日韩电影免费网址| 偷拍亚洲精品| 欧洲av不卡| 中文字幕一区二区三区日韩精品| 美女久久精品| 在线成人动漫av| 97精品国产| 奇米狠狠一区二区三区| 欧美视频一区| 日韩欧美2区| 国产999精品在线观看| 午夜av不卡|