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

數據庫的查詢優化方法分析

2010-12-31 00:00:00黃娜娜
青年文學家 2010年14期

摘要:本文主要探討了在數據庫的應用中對數據庫查詢優化的一些策略,其中包括基于索引、S0L語句的優化的方法,并簡要對其他一些常用優化方法做了介紹。本文在對數據庫查詢優化的方法上,進行了分析,提出了部分見解,有效地提高數據庫查詢效率。

關鍵詞:數據庫 查詢優化 查詢 優化 索引

隨著計算機應用的深入,計算機技術的成熟,各種應用軟件的普及,應用數據也隨著日常工作而迅速增長,作為數據倉庫的數據庫的重要性也日益顯著。

數據庫系統作為管理信息系統的核心,各種基于數據庫的聯機事務處理以及聯機分析處理正慢慢的轉變成為計算機應用的最為重要的部分,根據以往大量的應用實例來看,在數據庫的各種操作中,查詢操作所占的比重最大,而在查詢操作中基于SELECT語句在SQL語句中又是代價最大的語句。如果在使用中采用了優秀的查詢策略,往往可以降低查詢的時間,提高查詢的效率,由此可見查詢優化在數據庫中的重要性。本文就數據庫查詢優化中的策略進行介紹及探索。

一、基于索引的優化

數據庫的優化方法多種多樣,不同的方法對提高數據庫查詢效率也不相同。

索引作為數據庫中的重要數據結構,它的根本目的就是為了提高查詢的效率。而優化查詢的重要方法就是建立索引,建立適合關系數據庫系統的索引,這樣就可以避免表掃描,并減少了因為查詢而造成的輸入輸出開銷,有效提高數據庫數據的查詢速度,優化了數據庫性能。然而在創建索引時也增加了系統時間和空間的開銷。所以創建索引時應該與實際查詢需求相結合,這樣才能實現真正的優化查詢。

1.判斷并建立必要的索引

對所要創建的索引進行正確的判斷,使所創建的索引對數據庫的工作效率提高有所幫助。為了實現這一點,我們應做到以下要求:在熟記數據庫程序中的相關SQL語句的前提下,統計出常用且對性能有影響的語句;判斷數據庫系統中哪些表的哪些字段要建立索引。其次,對數據庫中操作頻繁的表,數據流量較大的表,經常需要與其他表進行連接的表等,要進行重點關注。這些表上的索引將對SQL語句的性能產生重要的影響。

2.對索引使用的一些規則

索引的使用在一些大型數據庫系統中會經常使用到,這樣可以有效的提高數據庫性能,使數據庫的訪問速度得到提高。但索引的使用要恰到好處,所以我們在使用索引時應遵守使用原則:建立索引可以提高數據庫的查詢速度,但索引過多,不但不能實現優化查詢,反而會影響到數據庫的整體性能。索引作為數據庫中實際存在的對象,每個索引都要占用一定的物理空間。所以對于索引的建立要考慮到物理空間容量,以及所建立索引的必要性和實用性。

3.合理的索引對SQL語句的意義

索引建立之后,還要確保其得到了真正的使用,發揮了其應有的作用。首先,可以通過SQL語句查詢來確定所建立的索引是否得到了使用,找出沒有使用到的索引。分析索引建立但沒有使用的原因,使其真正發揮作用。其次,索引得到使用以后,是否得到了預期的效果,對數據庫的性能是否實現了真正意義上的提高,只有合理的索引才能真正提高數據庫的性能。

二、優化SOL語句

在使用索引時可以有效的提高查詢速度,但如果SQL語句使用不恰當的話,所建立的索引就不能發揮其作用。所以我們應該做到不但會寫SQL,還要寫出性能優良的SQL語句。下面,就如何優化引用例子進行說明。

首先,在進行查詢時,返回的值應該是查詢所需要的。在查詢中應該盡量減少對數據庫中的表的訪問行數,使查詢的結果范圍最小,這就意味著在查詢時,不能過多的使用通配符,如:select*from tablel語句,而應該做到最小化查詢范圍,要查詢幾行幾列就選擇幾行幾列,如:select coil from tablel;多數情況下,用戶并不需要查詢到的所有數據,而只是部分或靠前的數據時,我們也可以通過SQL語句來進行限制查詢的結果,如:select top 50 coil from tablel。

其次,對于一些特殊的SQL語句,在使用時應正確選擇。我們用一組例子來說明,如:EXISTS,NOT EXISTS。

語句一:select sum(t1.c1)from t1 where((selectcount(*)from t2 where t2.c2=t1.c2)>0)

語句二:select sum(t1.c1)from t1 whereexists(select*from t2 where t2.c2=t1.c1)

兩個語句所得到的結果相同,但,語句二的效率要遠高于語句一,因為語句一在查詢中產生了大量的索引掃描。

在對數據庫查詢時,所使用的語句多種多樣,但選擇恰當的的字句能夠有效的提高查詢效率。

最后,WHERE子句在使用時應該注意的問題。

在WHERE子句中可以使用exist和not exist代替in和not in。應該盡量避免使用in,not in,or或者having。可以使用表鏈接代替exist。Having可以用where代替,如果無法代替可以分兩步處理。

三、其他優化方法

數據庫的查詢優化方法不僅僅是索引和SQL語句的優化,其他方法的合理使用同樣也能很好的對數據庫查詢功能起到優化作用。我們就來列舉幾種簡單實用的方法。

1.避免或簡化排序

應當簡化或避免對大型表進行重復的排序。當能夠利用索引自動以適當的次序產生輸出時,優化器就避免了排序的步驟。

2.避免相關子查詢

如果在主查詢和WHERE子句中的查詢中同時出現了一個列的標簽,這樣就會使主查詢的列值改變后,子查詢也必須重新進行一次查詢。因為查詢的嵌套層次越多,查詢的效率就會降低,所以我們應當避免子查詢。如果無法避免,就要在查詢的過程中過濾掉盡可能多的。

3.創建使用臨時表

在表的一個子集進行排序并創建臨時表,也能實現加速查詢。在一些情況下這樣可以避免多重排序操作。但所創建的I臨時表的行要比主表的行少,其物理順序就是所要求的順序,這樣就減少了輸入和輸出,降低了查詢的工作量,提高了效率,而且臨時表的創建并不會反映主表的修改。

4.用排序來取代非順序存取

磁盤存取臂的來回移動使得非順序磁盤存取變成了最慢的操作。但是在SOL語句中這個現象被隱藏了,這樣就使得查詢中進行了大量的非順序頁查詢,降低了查詢速度,對于這個現象還沒有很好的解決方法,只能依賴于數據庫的排序能力來替代非順序的存取。

對于數據庫的優化,我們要抓住關鍵問題,提出改善查詢效率,這樣才能真正使數據庫服務得到根本提高。

參考文獻:

[1]王珊,孟小峰:《數據庫系統導論(第七版)》,機械工業出版社,2000年10月。

[2]王磊,王熙寧:《網上考試系統的性能與安全分析》,情報科學,2004年22期。

[3]Abnhrmx Silbersehaa:《數據庫系統概念》,機械工業出版社,2006年10月。

[4]耶魯大學Abeaham、里海大學Korth:DatabaseSystem Concepts第五版。

主站蜘蛛池模板: 亚洲国产精品国自产拍A| 欧洲一区二区三区无码| 国产日本一线在线观看免费| 国产美女精品人人做人人爽| 东京热一区二区三区无码视频| 国产亚洲现在一区二区中文| 欧美人人干| 亚洲an第二区国产精品| 欧美影院久久| 国产精品污污在线观看网站| 国产在线高清一级毛片| 亚洲青涩在线| 无码啪啪精品天堂浪潮av| 欧美啪啪精品| 97青草最新免费精品视频| 精品无码视频在线观看| 久久久久亚洲AV成人网站软件| 午夜性爽视频男人的天堂| 高清色本在线www| 亚洲无码免费黄色网址| 久久人搡人人玩人妻精品| 精品国产免费观看| 日韩欧美色综合| 亚洲精品成人福利在线电影| 日韩国产亚洲一区二区在线观看| 成人另类稀缺在线观看| 国产门事件在线| 直接黄91麻豆网站| 在线精品亚洲一区二区古装| 不卡的在线视频免费观看| 国产欧美日韩精品第二区| 成人免费午夜视频| 日本午夜三级| 91精品啪在线观看国产91| 91网在线| 青草视频在线观看国产| 亚洲欧美综合另类图片小说区| 岛国精品一区免费视频在线观看| 久久窝窝国产精品午夜看片| 色婷婷狠狠干| 国产综合精品一区二区| 亚洲日韩久久综合中文字幕| 久久久无码人妻精品无码| 国产香蕉97碰碰视频VA碰碰看| 国产欧美中文字幕| 久久国产精品麻豆系列| 不卡国产视频第一页| 亚洲伊人天堂| 91娇喘视频| 国产精品美女在线| 五月天综合网亚洲综合天堂网| 国产男人天堂| 99视频在线免费看| 久久免费视频6| 青青青国产在线播放| 国产精品自在自线免费观看| 天天躁日日躁狠狠躁中文字幕| 无码一区二区三区视频在线播放| 好吊色国产欧美日韩免费观看| 精品久久香蕉国产线看观看gif | 亚洲欧美另类专区| 国产精品久久久久无码网站| 99久久成人国产精品免费| 一本大道香蕉高清久久| 99人体免费视频| 精品国产自在现线看久久| 国产精品专区第1页| 2020极品精品国产| 国产免费久久精品99re丫丫一| 亚洲专区一区二区在线观看| 九九热免费在线视频| 亚洲精品日产精品乱码不卡| 亚洲无码一区在线观看| 色亚洲激情综合精品无码视频| 亚洲免费播放| 国产精品久久久久鬼色| 少妇精品在线| 狠狠v日韩v欧美v| 欧美国产成人在线| a级毛片网| 亚洲午夜综合网| 欧洲av毛片|