今天暫時無事,風和日麗,萬里無雲。游山的、玩水的、遛麻雀的都閑的不亦樂乎,也忙的不亦樂乎。在這美好的季節,依舊躲在被窩或是電腦旁絞盡腦汁敲鍵盤的人們,也別有一番滋味。廢話少說,言歸正傳。
趕上了一個最難就業季,總有很多不順。前幾天面試,被問了很多mvc和sqlserver索引的問題,借這個時候來溫習一下這些知識。
有一個人事數據庫hrmis,里面的用戶表叫A01,共7000條數據。
為了測試需要把這些數據,復制到另外一個測試數據庫里。語句如下:
測試數據庫為:funcunweiTest
use funcunweiTestselect * 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表查詢所有列耗時情況
declare @start datetime, @end datetimeset @start = getdate()select * from peotestset @end = getdate()select datediff(millisecond, @start, @end)--查詢所有列耗時為:201350毫秒
【測試三】利用分頁存儲過程,查看某一頁單列及所有列耗時情況。
declare @start datetime, @end datetimeset @start=getdate()
exec selectbypage ' peoTest ', ' * ', ' A0188 ', 20, 10, 0, 0, ''set @end = getdate()select datediff(millisecond, @start, @end)--查詢的所有列第10頁,每頁20條數據,耗時:22346毫秒
--只查詢A0188列第10頁,每頁20條數據,耗時:12176毫秒
從以上三個測試例子,可以得出以下結論:
1、盡量少使用 * 號,應只查詢需要的字段,能減少不必要的消耗。2、多使用分頁,單頁數據量較少,也可以提高查詢效率。 先寫到這里,外面這么好的天氣,不去打打球,運動一下身體,真太可惜了。身體是本錢。身體是一切基礎!。
現在是在窗戶旁坐着,還是自然風吹的爽啊。
欲知后事如何,且聽下回分解。。。。
