999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Oracle數據庫的索引優化查詢分析

2019-09-09 13:33:49朱勇
數碼世界 2019年6期
關鍵詞:數據庫效率優化

朱勇

摘要:本文對Oracle數據庫的查詢技術進行分析與研究,通過索引優化查詢技術達到提高查詢速度的目的。在對Oracle數據表創建合理的索引后,通過對優化SQL語句,提升了數據庫查詢效率。

關鍵字:Oracle數據庫索引 優化查詢 分析

1緒論

作為主流的關系型數據庫,Oracle數據庫被廣泛應用于各種管理信息系統。Oracle數據庫使用SQL語言進行數據的增刪改查等操作,查詢效率已成為影響數據庫性能的關鍵因素之一,開展查詢優化研究已成為研究關注的問題。

Oracle數據庫體系結構決定了數據庫系統內存、硬件及各系統進程和程序的使用,了解Oracle的體系結構有助于分析和研究數據庫的優化問題。Oracle數據庫主要由內存結構、進程結構以及存儲結構等部分組成。其中,內存結構包含系統全局區域(SGA)以及程序全局區域(PGA)。進程結構包括用戶進程和服務器進程以及各種后臺進程。存儲結構分為邏輯存儲和物理存儲。SGA對數據庫性能影響最為關鍵,也對查詢優化起著重要作用。

Oracle數據庫提供了大量的索引選項,建立索引是進行查詢優化的重要方法。使用索引可以避免全表掃描,并減少查詢所造成的I/O開銷,提高數據的查詢效率和數據庫的性能。但索引會占據數據庫的空間,根據實際的查詢需要建立索引才能達到優化查詢的目的。

2創建合理的索引

索引可以只有一個字段,也可以同時具有多個字段。一般情況下多使用單字段索引,因為太多的復合索引在有單個字段索引的情況下是沒有意義的,還會降低數據增刪操作時的效率。但當復合索引中包含所有要查詢的列時,Oracle數據庫僅查詢索引塊就可以獲取查詢結果,使用復合索引比多個單列索引的查詢速率會高得多。

索引將數據表中的邏輯值映射到rowID,在查詢時可以快速定位到數據的物理位置。但是研究發現,對一個大型表建立索引后并不能加快查詢的速率,反而影響數據庫性能。這是源于SGA數據管理方式。Oracle數據庫進行數據塊高速緩存管理時,帶有索引數據會比普通的數據具有更高的駐留權限,在內存空間使用中,會將普通數據先行移除。對含有索引的大型表查詢時,索引數據可能用盡數據塊的緩存空間,數據庫必須進行頻繁的磁盤讀寫來獲取數據。因此,可對大型表進行分區處理,根據相應的分區表來建立分區索引。在對表建立索引時,應保證創建索引的字段盡可能出現在Where條件子句中。

有效的利用索引可以很好的提升查詢效率。索引不是越多越好,必須要適當使用才能做到事半功倍,不僅提升查詢速率,還能不過度消耗磁盤容量。

3基于索引的SQL語句優化

正確地使用索引可以加快數據查詢速度,此時還需要良好的SQL語句來支持。接下來本文著重分析建立索引后利用SQL語句來優化查詢。

(1) is Null與is not Null

在任何列中如果包含了Null指針,則該列不會被包含在索引中。即使索引建立在多列中,一旦列中出現了空值,該列索引也不會提高性能。而且在Where子句后使用is Null或is not Null時,優化器認為索引是無效的。 (2)連接列 當一個SQL查詢語句中使用連接符進行列連接時,此查詢語句中的列即使建立了索引,優化器也不會使用該列的索引。例如有查詢語句(1):

SQL> select * from student where snol‖'‖sage=192110121 '語句(1)

此時在sno字段上有索引,但是未通過索引對表進行查詢。查詢語句(1)執行109Rows、324Bytes的性能為:SelectStatement操作和Table Access Full操作均耗時28s。

將語句(1)改為語句(2)進行查詢:

SQL> select*from student where sno='1921101' andsage=21;語句(2)

此時通過sno字段上帶有的索引進行了查詢,提高了查詢速度。查詢語句(2)執行109Rows、324Bytes的性能為:SelectStatement操作、Table Access By Index Rowid操作和IndexUnique Scan操作均耗時23s。

(3)模糊查詢like語句中帶有通配符(%)

執行一條SQL查詢語句時,like語句后的通配符如果出現在要搜索的詞匯之首,則要查詢的列不使用索引;如果通配符不出現在詞首,則索引是有效的。例如有查詢語句(3):

SQL> select sno from student where sno like'%92110%';語句(3)

此時查詢不使用索引。查詢語句(3)執行109Rows、324Bytes的性能為:Select Statement操作和Table AccessFull操作均耗時31s。

將語句(3)改為語句(4)進行查詢:

SQL> select sno from student where sno like''821101%';

語句(4)

此時查詢使用索引。查詢語句(4)執行109Rows、324Bytes的性能為:Select Statement操作和Index Unique Scan操作均耗時21s。

(4) order by子句

order by子句可以對返回的查詢結果進行排序。查詢時使用order by子句需保證所查詢的列中含有索引,且索引被使用,否則將會減慢查詢速度。

(5)比較運算符

SQL查詢語句where子句中常會使用>、<、=、<>等比較運算符。例如,有<>(不等于比較運算符)查詢語句(5)和<(小于比較運算符)、>(大于比較運算符)查詢語句(6):

SQL> select*from student where sno <>21;語句(5)

SQL> select*from student where sno<21 0r sno>21;語句(6)

語句(5)和語句(6)的運行結果是一樣的,但是語句(6)會比語句(5)的查詢速度更快,因為Oracle數據庫對于語句(6)的查詢方案允許使用索引。

(6) in和exists的使用

使用in子句時,首先進行子查詢,把查詢的結構存放在臨時表中,之后再進行主查詢,這就加大了系統查詢時間。因此,使用in子句更為直觀,而使用exists則會有更好的效率。例如有m查詢語句(7):

SQL> select*from student where sno in (select snofrom se where sno=c0021);語句(7)

查詢語句(7)執行600Rows、500Bytes的性能為:SelectStatement操作、TabLe Access Full和Index Range Scan操作均耗時68s。

如果SQL語句where子句的列中帶有索引,使用exists子句時,優化器不通過全表掃描而是僅僅根據索引就可以完成操作。而且當使用Exists時,Oracle數據庫先進行主查詢然后進行子查詢,直到找到第一個與條件相匹配的值為止,節省了查詢時間。例如有exists查詢語句(8):

SQL> select*from student where exists (select snofrom se where sno=c0021);語句(8)

查詢語句(8)執行600Rows、500Bytes的性能為:SelectStatement操作、Table Access by Index Rowid,和IndexRange Scan操作均耗時58s。View操作耗時16s。查詢所消耗的時間和資源明顯比查詢語句(7)要少,使用exists可以直接通過索引來獲取數據,而使用in則不能,在大型表查詢中使用exists的優勢是明顯的。

4結論

數據庫查詢作為數據庫一項重要的功能要盡力提高其效率。本文從建立索引、優化SQL語句方面對Oracle數據庫查詢優化進行研究,有效提高了查詢效率。

參考文獻

[1]劉鵬.基于關系數據庫的查詢優化研究[J]網絡安全技術與應用,2018 (02):66-67.

[2]饒淑珍.基于Oracle數據庫的幾種常見SQL優化策略[J].電腦知識與技術,2018,l4 (08):12-13.

[3]賈欽,數據庫管理系統中查詢優化的設計和實現措施[J]電子技術與軟件工程,2018(15):142

[4]方芳,謝慧,關于Oracle數據庫的SQL查詢語句優化探究[J],河南科技,2018 (04):25-26.

[5]蘇現鵬,基于Oracle數據庫海量數據的查詢優化研究[J].現代工業經濟和信息化,2017,7 (03):84-85.

[6]. Information Technology - Database Management; New Datafrom Technical University of Munich Illuminate Findings inDatabase Management (Query optimization through the lookinggLass, and what we found running the Join Order Benchmark)[J]. Computers, Networks&Communications, 2018.

猜你喜歡
數據庫效率優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
跟蹤導練(一)2
主站蜘蛛池模板: 国产真实乱了在线播放| 亚欧成人无码AV在线播放| 99视频在线免费观看| 欧美综合成人| 色国产视频| 免费观看三级毛片| 色婷婷综合激情视频免费看| 国模视频一区二区| 久热这里只有精品6| 在线国产毛片手机小视频| 久久性视频| 宅男噜噜噜66国产在线观看| 人妻免费无码不卡视频| 亚洲中文无码av永久伊人| 啊嗯不日本网站| 亚洲精品成人7777在线观看| 亚洲第一国产综合| 亚洲国产中文精品va在线播放| 午夜国产精品视频黄| 又大又硬又爽免费视频| 97影院午夜在线观看视频| 久爱午夜精品免费视频| 久久99精品久久久久久不卡| 欧美成人午夜在线全部免费| 欧美在线精品怡红院| 亚洲精品777| aaa国产一级毛片| 国产高清在线精品一区二区三区 | 国产性精品| 青青草原国产一区二区| 久久青青草原亚洲av无码| 91精品啪在线观看国产| 婷婷色中文| 激情午夜婷婷| 欧美国产成人在线| 国产国拍精品视频免费看| 精品夜恋影院亚洲欧洲| 麻豆精品久久久久久久99蜜桃| 在线亚洲精品自拍| 国产一线在线| 久久成人免费| 日本影院一区| 国产浮力第一页永久地址 | 激情六月丁香婷婷| 99热线精品大全在线观看| 婷婷丁香在线观看| 91免费片| 亚洲欧洲一区二区三区| 国产成人一二三| 2020精品极品国产色在线观看| 色悠久久综合| 91 九色视频丝袜| 国产精品极品美女自在线网站| 国产成人免费| 国产原创演绎剧情有字幕的| 91在线无码精品秘九色APP| 欧美精品亚洲精品日韩专区va| 制服丝袜一区| AV天堂资源福利在线观看| 亚洲三级片在线看| 色综合日本| 爱爱影院18禁免费| 无码不卡的中文字幕视频| 亚洲伊人久久精品影院| 国产高清免费午夜在线视频| 色网站在线免费观看| 丁香六月综合网| 99色亚洲国产精品11p| 狠狠综合久久| 8090成人午夜精品| 操国产美女| 真实国产乱子伦高清| 亚洲无码高清一区| 久久精品视频亚洲| 亚洲色无码专线精品观看| 国产一区二区三区夜色| 在线综合亚洲欧美网站| 欧美日韩北条麻妃一区二区| 日韩欧美综合在线制服| 免费国产高清视频| 专干老肥熟女视频网站| 婷婷六月在线|