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

SQL Server數據庫的查詢優化探析

2013-02-08 05:37:02李紅麗
長春教育學院學報 2013年7期
關鍵詞:排序數據庫效率

李紅麗

SQL Server數據庫的查詢優化探析

李紅麗

SQL Server是一個關系數據庫系統,是一個全面的數據庫管理平臺,查詢語句是數據庫中最基本、最常用、最復雜的語句,數據庫中的查詢在返回結果時有時需要很長的時間,速度非常緩慢導致用戶無法忍受。為提高查詢效率,數據庫的查詢優化便成了一個備受關注的話題。從SQL Server數據庫出發,結合數據庫中的查詢語句,可以討論影響SQL Server數據庫查詢效率的因素,并提出SQLServer數據庫優化查詢的方法。

SQLServer;數據庫;查詢效率;查詢優化

李紅麗/陽泉師范高等專科學校助教(山西陽泉045200)。

1 引言

隨著計算機科學技術日新月異的發展,數據庫技術成了其中發展較快的領域之一,SQL Server已成為最普及、最全能的數據庫管理系統,因此各類信息管理系統與數據庫有了更緊密的結合。隨著數據量的不斷增加,數據查詢的速度受到了嚴重影響,數據庫的合理使用便顯得尤為重要。因此,本文對數據庫系統的查詢優化展開討論。

2 影響SQL Server數據庫查詢效率的因素

在SQL Server數據庫中,對于一個查詢而言,經常會遇到查詢方法不同但查詢結果相同的情況,但條件表達式不同會使數據庫的響應速度出現很大差別。以下面兩條常用SQL語句為例:

Select*from table where TID>1000 and name=’LiYang’;

和 Select*from tablewhere name=’LiYang’and TID>1000;

從這兩條語句的書寫順序來看它們不太一樣,如果TID是一個聚合索引,那么第一條語句查詢時,直接從表的1000條之后的記錄中查找滿足name='LiYang'的記錄;而第二條語句查詢時,需先從全表中查找出滿足name='LiYang'的所有記錄,然后再根據TID>1000這個限制條件提取出查詢結果。可見,第一條語句的查詢速度要快。

在設計數據庫查詢時,查詢效率顯得至關重要。在設計中應注意到:(1)是否用到索引。數據庫索引如同書籍中的目錄,在訪問數據庫時,用戶可以減少遍歷數據的次數,從而可以快速找到所需數據。(2)I/O吞吐量。在硬件環境特定時,部署方案的優化可適當提高I/O吞吐量,避免發生瓶頸問題。(3)應當創建計算列。如果沒有相應的計算列,在進行數據查詢時對已有數據再次進行計算,從而浪費一部分性能。(4)要有足夠的內存。在查詢或訪問數據庫中的數據時,難免會占用大量的內存空間,當內存不足時,數據的訪問速度就會受到明顯的影響。除此以外,網速慢、查詢出的數據量過大、鎖或者死鎖、返回了不必要的行和列、查詢語句不夠優化等,也是影響SQL Server數據庫查詢效率的重要因素。

3 SQLServer數據庫優化查詢的方法

3.1 合理使用索引

索引查詢是數據庫中重要的記錄查詢方法,它的根本目的就是為了加快查詢速度。以下是實際應用中應該注意的幾點。

3.1.1 連接操作需要經常進行,但是沒有指定為外鍵的列上建立索引,而連接操作不經常進行的字段優化器會自動生成索引;特別注意不要在選擇的欄位上使用索引,這樣是無意義的,最好在條件選擇的語句上合理的使用索引。如where,order by。

舉例:Select id,title,content,cat_id from article where cat_id=11;

這個語句在id,title,content上使用索引是毫無意義的,對這個語句沒有任何優化作用。但如果在外鍵cat_id上使用索引,可以起到優化作用。

3.1.2 在SQL語句中GROUP BY、ORDER BY的字段上經常建立索引。

3.1.3 在條件表達式中用到的不同值較多的列上最好建立檢索,在不同值較少的列上不需要建立索引,如性別字段上就不必建立索引。

3.1.4 經常存取的列應避免建立索引。

3.1.5 如果某些列需要建立連接應該建立索引。

3.1.6 如果有多個待排序的列,可在這些列上建立復合索引(compound index),但注意建立復合索引的順序要按照使用的頻度來確定。

3.1.7 在缺省情況下要建立非簇集索引,但有時也要考慮簇集索引,如:含有有限數目(不是很少)唯一的列,進行大范圍的查詢。

索引的充分利用可減少I/0的掃描次數,有效避免對整個表的搜索。當然索引的合理性要建立在對各種查詢的分析和預測中,也取決于DBA所設計的數據庫結構。

3.2 避免或簡化排序

在數據庫查詢時應避免或簡化對大型表的重復排序。在可以利用索引自動以適當的次序進行輸出時,優化器可自動避免排序的步驟。為避免多余的排序,要適當的增減索引,適當地合并數據庫表。如果實在避免不了排序,要考慮適當簡化。

3.3 避免對大型表進行全表順序掃描

在使用嵌套查詢時,對表的順序掃描會使查詢效率明顯下降。為避免這種情況,可以對連接的列進行索引。如有三個表:學生表Studen(t學號Sno、姓名Sname、性別Sex、年齡Sage、系別Sdept),課程表Course(課程號Cno,課程名Cname,先行課Cpno,學分Ccredit)和選課表SC(學號Sno、課程號Cno、成績Score)。如果其中兩個表要做連接,就要在“學號”這個連接字段上建立索引。

此外,也可使用并集來避免順序存取。雖然在所有的列上都有索引,但某些形式的where子句迫使優化器使用順序存取。以下例子是強迫對orders表執行順序操作:

在Student.sno和SC.sno上雖建立了索引,但在這個語句中優化器還會使用順序存取路徑掃描整張表。因為這個語句檢索的是分離的行的集合,所以應改為如下語句:

此時就可以利用索引路徑處理查詢,提高查詢效率。

3.4 避免相關子查詢

如果一個列的標簽在主查詢和where子句中的查詢中同時出現,那么當主查詢中的列值改變后,很可能子查詢必須重新查詢一次。查詢嵌套的層次越多,效率就會越低,因此要盡量避免子查詢。若子查詢不可避免,就要在子查詢中將多余的行全部過濾掉。

3.5 避免使用通配符匹配

在數據庫查詢中使用通配符匹配時特別耗費時間。如以Student表為例看like關鍵字:

在執行查詢時就會利用索引來查詢,顯然會大大提高速度。

3.6 避免在where子句使用數據轉換和串操作等函數操作

除以上優化方法之外,還應注意:(1)要避免在經常被更新的列上建立索引。因為每次更新操作,所有的索引都要做相應的調整。另外,所有的分頁操作都被記錄在日志中,這樣也會增加I/O操作。(2)要避免在經常更新的列上建立聚集索引,以免引起整行的移動。(3)要盡量在where子句中少用OR和IN。可以考慮將其使用Union分成幾個子查詢。(4)應避免在where子句中使用NOT、<>、或!=運算符,減少全表掃描。

4 結束語

SQLServer是微軟公司出品的關系型數據庫管理(RDBMS)軟件,雖應用很廣,效率很高,但在實際應用過程中,隨著數據庫規模越來越大,數據量呈指數級上升,應進一步完善提升,從而繼續改善數據庫(尤其是大型數據庫)的性能。

[1]石樹剛.關系數據庫[M].北京:清華大學出版社,1998

[2王珊,薩師煊.數據庫系統概論[M].北京:高等教育出版社,2006

[3]付立平,青巴圖,郎彥.數據庫原理與應用[M].北京:高等教育出版社,2004

[4]陳佳.基于SQL server數據庫優化查詢的分析 [J].企業導報,2010,8:179-181

[5]谷震離.SQL Server數據庫應用程序性能優化方法[J].計算機工程與設計,2006,27(15)

G202

A

1671-6531(2013)07-0054-01

郭一鶴

猜你喜歡
排序數據庫效率
排序不等式
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
恐怖排序
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
數據庫
財經(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手机在线| 亚洲国产中文精品va在线播放| 亚洲无卡视频| 国产成人精品午夜视频'| 国产欧美在线观看视频| 91久久大香线蕉| 亚洲综合在线最大成人| 天天色综合4| 日韩最新中文字幕| 伊人久久大线影院首页| 老司机午夜精品视频你懂的| 欧美亚洲欧美| 国产精品亚洲一区二区三区z | 国产精品专区第1页| 人人91人人澡人人妻人人爽| 精品无码一区二区三区在线视频| 69av在线| 欧美一级特黄aaaaaa在线看片| 超清无码一区二区三区| 色综合五月| 国产99精品视频| 欧美中文字幕无线码视频| 国产情侣一区二区三区| 日本91视频| 日本久久免费| 二级毛片免费观看全程| 全午夜免费一级毛片| 第九色区aⅴ天堂久久香| 国产成人精品一区二区三在线观看| 亚洲精品桃花岛av在线| av大片在线无码免费| 高清无码一本到东京热| 国产91视频观看| 国产第三区| h视频在线播放| 国产精品部在线观看| 亚洲视频在线网| 成人精品午夜福利在线播放| 国产欧美视频综合二区| 在线欧美国产| 国产91丝袜| 最新国产成人剧情在线播放| 久久综合AV免费观看| 久久综合九九亚洲一区| 中文字幕亚洲无线码一区女同| 538国产视频| 日本日韩欧美| 久久国产精品娇妻素人| 国产国语一级毛片| 波多野结衣第一页| 国产白浆在线| 亚洲无线视频| 亚洲区视频在线观看| 99热精品久久| 一本色道久久88| 国产高潮流白浆视频| 伊人91视频| www.日韩三级| 国产精品极品美女自在线看免费一区二区 | 欧美精品在线视频观看 | 国产成a人片在线播放| 久久人人妻人人爽人人卡片av| 99re热精品视频国产免费| 亚洲爱婷婷色69堂| www.精品国产| 免费不卡视频| 幺女国产一级毛片| 国产福利免费在线观看| 精品剧情v国产在线观看| 成人亚洲国产| 999国内精品久久免费视频| 色综合天天视频在线观看| 中文字幕在线一区二区在线| 国产微拍一区二区三区四区| 国产欧美另类| 欧美中文字幕在线视频| 福利在线一区| 亚洲毛片一级带毛片基地| 亚洲天堂色色人体| 亚洲v日韩v欧美在线观看| 在线高清亚洲精品二区| 亚洲h视频在线|