天天看點

淺談sqlserver資料庫優化(一)----開光篇

今天暫時無事,風和日麗,萬裡無雲。遊山的、玩水的、遛麻雀的都閑的不亦樂乎,也忙的不亦樂乎。在這美好的季節,依舊躲在被窩或是電腦旁絞盡腦汁敲鍵盤的人們,也别有一番滋味。廢話少說,言歸正傳。

趕上了一個最難就業季,總有很多不順。前幾天面試,被問了很多mvc和sqlserver索引的問題,借這個時候來溫習一下這些知識。

有一個人事資料庫hrmis,裡面的使用者表叫A01,共7000條資料。

為了測試需要把這些資料,複制到另外一個測試資料庫裡。語句如下:

測試資料庫為:funcunweiTest

use funcunweiTest

select * into peoTest from hrmis..a01

   –-輸出結果(7311行受影響)

注:

【SELECT INTO 和 INSERT INTO SELECT 兩種表複制語句】

索引使用的目的,是在大資料量的情況下提高查詢速度,幾千條資料庫是看不出來很大差别的。為了實作大資料,我們可以不斷的執行下面這個語句(小心硬碟空間不足,):

 insert into peoTest select * from peoTest

--【在耗費了3G的空間後,用count進行統計有将近375萬條資料,可以滿足我們的測試了。】

查詢耗時我用的辦法時,查詢之前先聲明一個時間,查詢之後再聲明一個時間,然後獲得時間差。 

datediff(millisecond,開始時間,結束時間)  --millisecond 毫秒

【測試一】檢視peoTest表隻查詢一個列耗時情況。

declare @start datetime,@end datetime

set @start=getdate()

select A0188 from peotest

set @end=getdate()

select datediff(millisecond,@start,@end) 

--查詢A0188耗時為:23706毫秒 A0188代表ID

--查詢A019Z列耗時:30960毫秒 A019Z代表位址

【測試二】檢視peoTest表查詢所有列耗時情況

select * from peotest

select datediff(millisecond,@start,@end)

--查詢所有列耗時為:201350毫秒

 【測試三】利用分頁存儲過程,檢視某一頁單列及所有列耗時情況。

一個好用的分頁存儲過程

 set @start=getdate() 

exec selectbypage 'peoTest','*','A0188',20,10,0,0,'' 

set @end=getdate() 

  --查詢的所有列第10頁,每頁20條資料,耗時:22346毫秒

--隻查詢A0188列第10頁,每頁20條資料,耗時:12176毫秒

從以上三個測試例子,可以得出以下結論:

 1、盡量少使用 * 号,應隻查詢需要的字段,能減少不必要的消耗。 

 2、多使用分頁,單頁資料量較少,也可以提高查詢效率。先寫到這裡,外面這麼好的天氣,不去打打球,運動一下身體,真太可惜了。身體是本錢。身體是一切基礎!。

現在是在窗戶旁坐着,還是自然風吹的爽啊。

欲知後事如何,且聽下回分解。。。。

作者:

從此啟程/範存威

出處:

http://www.cnblogs.com/fancunwei/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。如文章對您有用,煩請點個推薦再走,感謝! 本部落格新開通打賞,滑鼠移到右側打賞浮動處,即可賞部落客點零花錢,感謝您的支援!