成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于數據庫查詢優化的思考

運維 數據庫運維
使用數據庫已經有6年歷史了,寫過許多的數據庫查詢語句,面對過許多的問題,也在磕磕碰碰中學到了很多東西。昨天在看系統數據庫設計與SQL代碼時,突然“發現”了許多平常不屑看到的問題,于是就萌生了把它提出來思考的念頭。

舉一個例子,我現在有一些新聞信息,它包括這些字段;新聞ID,新聞Name,新聞ShortIntro,新聞Detail,新聞PublishTime。我現在要把它存放在數據庫中,然后從數據庫中將其取出來放在GridView中分頁顯示。

我現在就以一種我所見過的常見的思維方式來一步一步模擬這個實現過程。

***步:建立新聞數據表。

在這一步,很多人都會直接建一張News表,里面包括了上面說的那些字段。

第二步:查詢數據。

寫一個方法,把News表中滿足查詢條件的數據取出來放在DataSet(DataTable)中,作為數據源。

第三步:綁定到GridView。

設置GridView的分頁屬性,將上面查詢得到的數據源綁定到GridView,實現數據在GridView中的分頁顯示。

上面就是我們常見的做法了。

我的做法會是這樣:

***步:建立新聞數據主-從表。

我們在系統開發過程中會發現,其實在一條的完整的數據信息中,其實很多時候,很多列表項并不會用到。我們分析News信息,我們可以初步的把ID,Name,ShortIntro,PublishTime作為主要信息,我們將這些信息集中起來,新建一張表News(ID,Name,ShortIntro,PublishTime),另外一個字段Detail放在另一張從表中,新建一張表NewsDetail(ID,Detail,NewsID)。這樣做有什么好處呢,首先我們降低了表的“重量”。我們將最重要,最常用的信息簡化出來放在一個主表中,這樣在使用過程中,我們只需要從這張住表中獲取我們所需的數據就可以了,而不需要像***種方法一樣遍歷所有字段,這減少了數據庫查詢的時間,提高了性能。主-從表建立的原則是,將最重要的,最常用的分離出來作為主表,將那些描述性的,內容龐大的作為從表

第二步:編寫適合的SQL語句。

我們應該為不同的功能實現編寫適合的SQL語句。上面那種方法中,用一個方法查詢出了所有的數據信息,這是滿足所有場合的數據要求的。但是,我們并不需要這么多的數據內容,多余的數據內容耗費了我們大量的時間和空間。我們往往只需要其中的部分內容,比如說主要信息。這也印證了為什么我們上面要建立主-從表。我們在建立了主-從表之后,為滿足各種場合,可以編寫以下幾種方法:GetNews(int? ID, string Name)//從主表中查詢滿足條件的數據,GetNewsDetail(int? ID, string Name)//從主表和從表中查詢滿足條件的數據。***種方法提供了新聞主要信息,第二種方法提供了全面的信息,這兩種方法基本上就能滿足所有場景且不會帶來過多的數據冗余。這里還要指出一點,有些人喜歡這么寫GetNewsByID(int? ID ),GetNewsByName(string Name),這樣寫是很靈活,很有針對性,但是這樣寫完全沒必要。

第三步:分頁綁定。

上面那種方法是一次性取出所有數據給GridView,讓控件自己去分頁,這樣做方便省事。但是會有幾個問題:

(1)數據量大。因為是一次性取出所有滿足條件的數據,所以數據量比較大,而這些數據是都需要放在內存中的,所以會影響系統性能。而且在初次載入時會有些卡,給人的感覺是系統加載不平順。

(2)我們并不需要這么多數據。為什么我要這么說呢?研究用戶的使用習慣我們會發現,用戶大多數情況下并不會逐頁的去瀏覽數據,用戶關注的往往是前幾頁的前幾條。所以取出來的數據很多時候并沒有被用戶查看。

所以在這里,使用分頁查詢的方式是更加合適的。每次只從數據庫里面查詢一頁數據,這樣系統負載小,頁面載入平順,而且完全能夠滿足用戶的使用要求。有些人會問,你這樣做不是會增加數據庫IO次數,我想說的是,一次性獲取大量冗余數據,并要承擔冗余所帶來的持久影響與這些比理論上增加的IO次數(用戶并不會逐頁查看,也就并不會產生那么多次分頁查詢)要小得多的訪問相比,分頁查詢具有不可否定的優勢。

原文鏈接:http://www.cnblogs.com/allon6318/archive/2013/05/21/3090253.html

責任編輯:彭凡 來源: 博客園
相關推薦

2013-06-24 10:31:38

2011-05-19 10:29:40

數據庫查詢

2010-08-26 14:39:54

Infobright數

2013-01-04 10:00:12

MySQL數據庫數據庫查詢優化

2011-08-15 18:09:46

查詢性能調優索引優化

2017-09-20 09:58:21

數據庫“狀態”字段設計

2009-05-15 10:11:55

數據庫查詢查詢性能分頁瀏覽

2021-01-31 17:50:41

數據庫查詢程序員

2023-07-12 08:55:16

PawSQL數據庫

2011-08-05 11:01:15

MySQL數據庫設計

2022-06-20 05:40:25

數據庫MySQL查詢

2009-07-06 21:20:34

SQL Server數

2019-10-08 10:25:00

MySQL數據庫DNS

2011-03-08 08:49:55

MySQL優化單機

2023-09-01 15:34:34

數據庫開發

2019-10-08 08:46:59

mysql數據庫SQL

2009-01-27 21:00:00

服務器數據庫SQL Server

2010-05-13 10:47:44

MySQL數據庫查詢

2010-06-10 10:15:50

MySQL數據庫查詢

2011-04-06 11:16:47

SQL Server數查詢優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区一区三区 | 美女一区 | 国产高清视频一区二区 | 久久伊 | 一级做a爰片性色毛片16美国 | 人和拘一级毛片c | 欧美另类视频 | 青青久在线视频 | 国产日韩视频 | 国产美女在线播放 | 久久婷婷色 | 日本成人中文字幕在线观看 | 射久久 | 亚洲欧美精品一区 | 亚洲精品视频免费看 | 欧美午夜精品 | 国产午夜精品理论片a大结局 | 日本xx视频免费观看 | 亚洲电影一区 | 欧美日韩高清免费 | 精品国产一区二区国模嫣然 | 日日做夜夜爽毛片麻豆 | 亚洲国产高清高潮精品美女 | 日本不卡一区二区三区 | 国产精品久久久久久久久久久久 | 中文字幕av亚洲精品一部二部 | 毛片99 | 91麻豆产精品久久久久久 | 成人免费视频网站在线观看 | 亚洲黄色高清视频 | 日韩一区二区三区av | 天天综合久久 | 国产极品车模吞精高潮呻吟 | 日本一区高清 | 久久久久久久国产精品影院 | 成人精品一区二区三区中文字幕 | аⅴ资源新版在线天堂 | 欧美黑人狂野猛交老妇 | 国产成人精品在线 | 久草福利 | 亚洲二区在线 |