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

淺談如何提高基于WEB的軟件系統的查詢速度

2011-04-12 00:00:00陳燕
現代營銷·學苑版 2011年7期

如何提高查詢速度是基于WEB的軟件系統設計里的一個非常重要的問題,如果一開始就沒有控制好數據的查詢速度,面對諸多用戶,隨著系統中數據量的增加,很可能出現數據擁塞現象,同時訪問訪問的人不斷增多,系統速度也會越來越慢,一旦用戶達到峰值,系統隨時都有可能癱瘓。下面我們一起來討論下如何提高查詢速度。

1.通過使用索引提高系統性能

索引是用于加速訪問速度的一種建立在數據表上的數據庫對象。建立索引時,在索引頁中保存鍵值,以及指向其他索引的指針或數據頁。相對于直接進行表掃描訪問數據來說,通過索引訪問數據庫中數據的速度會快得多。通過表掃描訪問數據,是將數據頁中的數據記錄全部掃描一遍,而不是在找到符合條件的數據后立即停止。所以表的記錄數目會不斷增加,性能也會下降的明顯加快。為了顯著提高系統的性能,就必須設計合理的索引。如果建立的是不合理的索引,那么對特定的查詢不具備足夠的選擇性,終歸又變成了進行表掃描 。

2.查詢優化程序過程

編寫程序時肯定要用到大量的數據庫查詢語句,一般來說,針對一條復雜的查詢語句,相同的查詢條件可以有多種不同的方法來進行表達,而對應不同的表達,數據庫的響應速度也將大相徑庭,因此若要提高軟件的性能,就必須要提高SQL語句的質量。SQL語言是面向結果而不是面向過程的查詢語言,所以一般來說,支持SQL語言的大型關系型數據庫都需要使用一個基于成本的優化器,目的在于為即時查詢提供最佳執行策略。這個執行策略就是執行這個查詢所需要的一系列步驟。這一個優化算法就體現了數據庫的反應速度。查詢策略和查詢步驟不同,則服務器的反應也不同,因此要使系統性能大大提高,采用適當的查詢策略才行。

SQL查詢語句可以有多種執行策略,優化器會找出預估的所有執行方法中成本最低的一種,也就是所需時間最少的那種。一般來說,使用什么索引和采用何種表的連接手段最為重要,而所有優化的進行都是基于查詢語句中的where子句。通常來說硬盤訪問是成本最高的操作,對用戶來說,對字段索引進行操作是優化查詢的關鍵。

2.1使用優化器優化where子句可以分為以下幾類:

(l)參數搜索

數據庫搜索參數的核心是能否使用表中字段的索引來查詢數據。只需帶有=、<、>、>=、<=等操作符的條件便可直接使用索引,而不必直接查詢記錄中的數據。有時優化器可以將非搜索參數轉化為搜索參數,如: 將“>$200*15,,轉化為“>3000”;將“BETWEENAND”轉化為“>=AND。”等。

因此可以適當提供一些冗余的參數進行搜索,給優化器增加更多的選擇余地。例如a和b兩張表是一對多的關系,相同的查詢條件可以有如下三種表現方法:

①WHERE a.xh=b.xh AND b.xh=’200913’

②WHERE a.xh=b.xh AND a.xh=’200913’

③WHERE a.xh=b.xh AND a.xh=’200913’AND b.xh=’200913’

不難看出,三種方法中第三種方法最好,因為它給優化器提供了更寬闊的選擇空間。

(2)鏈接條件

在進行查詢時,優化器首先列舉出所有連接的方法,然后計算每種連接的成本,再選擇最低成本的那一個。如果無法獲得連接時用到的數據,系統則會估算可能的命中率,一般使用平均密度作為依據。

(3)‘或’運算

在查詢語句中包含IN關鍵詞時,優化器會自動轉化其中的內容以OR并列條件。數據庫管理系統查詢每一個OR從句,并將所有的結果進行合并,然后再去掉重復項形成最終結果。

2.2基于對數據庫優化器的理解,采用以下技巧優化查詢語句:

(l)避免數據類型不兼容。

不兼容的數據類型有可能使優化器無法執行一些原本可執行的優化操作。那么在編程時就要將類型轉化掉,如varchar和char、int和float是互相不兼容的。

(2)避免使用其他數學操作符

如下語句:

SELECT*FORM a WHERE x>200

SELECT*FORM a WHERE id like‘A%’

而不要寫成:

SELECT*FORM a WHERE x*15>3000

SELECT*FORM a WHERE SUBSTRING(id,1,1,)=’A’

2.3避免使用!=或<>之類的操作符.

這會使得系統去直接搜索表數據,而不是使用索引,那么優化器就無法通過索引來確定將要命中的行數。

2.4盡量避免鏈接

選擇數據庫表時,會自動鏈接各個表中的相同屬性名(域也相同),這種自動鏈接大多數是有益的,但是在某些情況下還是需要取消鏈接。

如可以通過兩種方法查詢條件為a、b、c表的學號為’200913’:

WHERE(a.xh=b.xh and b.xh=c.xh and a.xh=’200913’)

② WHERE(a.xh=’200913’AND b.xh =’200913’AND c.xh=’200913’

第一種方法是在自動生成的基礎上添加a.xh=’200913’,這種方法看似簡單,其實存在不必要的鏈接,它大大降低了執行效率。第二種方法則要先取消鏈接,然后再重新寫WHERE語句。

以上便是提高查詢速度的一些基本方法,這也是通過反復測試,比較不同的語句得到的較快解決方案。當然,如果要得到更快的響應性能,還是需要通過調整數據庫管理系統的參數得以更有效實現。

參考文獻

趙強.SQL Server數據庫編程技法范例[M].北京:清華大學出版社,2005

彭暉.SQL Server安全性[M].北京:清華大學出版社,2004.

趙啟志.PHP+SQL Server完整自學方案[M].北京:中國鐵道出版社,2001.

主站蜘蛛池模板: 四虎综合网| 亚洲午夜福利精品无码| 超清无码熟妇人妻AV在线绿巨人| 久久综合婷婷| 亚洲激情区| 伊人久久大香线蕉aⅴ色| 久久精品人人做人人爽97| 亚洲最新网址| 久久国产香蕉| 欧美激情第一区| 国产拍在线| 毛片网站观看| 激情亚洲天堂| 日韩福利视频导航| 久久福利片| 免费观看精品视频999| 日韩黄色大片免费看| 成人国产免费| 啪啪免费视频一区二区| 四虎影视8848永久精品| 国模视频一区二区| 久久久久国产精品熟女影院| 99免费在线观看视频| 国产成人乱无码视频| 成人毛片在线播放| 久久综合干| 欧美h在线观看| 成人小视频在线观看免费| 在线观看国产精品日本不卡网| 青青久在线视频免费观看| 国产JIZzJIzz视频全部免费| 亚洲国产成人精品无码区性色| a亚洲视频| 亚洲成人精品在线| 久久99精品久久久久久不卡| 亚洲精品无码AV电影在线播放| 国产成人亚洲精品色欲AV| 国产男女免费完整版视频| 国产爽妇精品| 亚洲人成影视在线观看| 亚洲精品日产AⅤ| 国产欧美综合在线观看第七页| 国产成人a在线观看视频| 思思热精品在线8| 精品国产香蕉伊思人在线| 国内丰满少妇猛烈精品播| 欧美三级视频在线播放| 亚洲天堂久久久| 亚洲日韩每日更新| 又猛又黄又爽无遮挡的视频网站| 一级做a爰片久久毛片毛片| 免费无码又爽又刺激高| 久久女人网| 亚洲乱码精品久久久久..| 狠狠ⅴ日韩v欧美v天堂| 国产91九色在线播放| 亚洲AV无码一区二区三区牲色| 久久精品人人做人人爽| 精品无码人妻一区二区| 久久美女精品| 亚洲精品久综合蜜| 国产老女人精品免费视频| 国产一区免费在线观看| 国产成人亚洲综合a∨婷婷| 国产精品嫩草影院av| AV无码一区二区三区四区| 婷婷亚洲天堂| 国产69精品久久久久妇女| 1769国产精品视频免费观看| аⅴ资源中文在线天堂| 91亚洲国产视频| 又污又黄又无遮挡网站| 无码粉嫩虎白一线天在线观看| 国产精品吹潮在线观看中文| 国产一级一级毛片永久| 91在线精品免费免费播放| a在线观看免费| 日韩AV手机在线观看蜜芽| 国产一级毛片高清完整视频版| 久久久国产精品免费视频| 国产乱论视频| 四虎国产精品永久在线网址|