日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > Sqlserver > SQL Server 2000優(yōu)化SELECT語句方法

SQL Server 2000優(yōu)化SELECT語句方法

來源:程序員人生   發(fā)布時間:2014-02-09 21:43:16 閱讀次數(shù):2835次
本文是SQL Server SQL語句優(yōu)化系列文章的第一篇。該系列文章描述了在Micosoft’s SQLServer2000關(guān)系數(shù)據(jù)庫管理系統(tǒng)中優(yōu)化SELECT語句的基本技巧,我們討論的技巧可在Microsoft's SQL Enterprise Manager或 Microsoft SQL Query Analyzer(查詢分析器)提供的Microsoft圖形用戶界面使用。

除調(diào)優(yōu)方法外,我們給你展示了最佳實踐,你可應(yīng)用到你的SQL語句中以提高性能(所有的例子和語法都已在Microsoft SQL Server 2000中驗證)。

閱讀該系列文章后,你應(yīng)該對Microsoft 工具包中提供的查詢優(yōu)化工具和技巧有一個基本的了解,我們將提供包含各種各樣的以提高性能和加速數(shù)據(jù)讀取操作的查詢技巧。

Microsoft提供了三種調(diào)優(yōu)查詢的主要的方法:

使用SET STATISTICS IO 檢查查詢所產(chǎn)生的讀和寫;

使用SET STATISTICS TIME檢查查詢的運行時間;

使用SET SHOWPLAN 分析查詢的查詢計劃 。

SET STATISTICS IO

命令SET STATISTICS IO ON 強制SQL Server 報告執(zhí)行事務(wù)時I/O的實際活動。它不能與SET NOEXEC ON 選項配對使用,因為它僅僅對監(jiān)測實際執(zhí)行命令的I/O活動有意義。一旦這個選項被打開,每個查詢產(chǎn)生包括I/O統(tǒng)計信息的額外輸出。為了關(guān)閉這個選項,執(zhí)行SET STATISTICS IO OFF。

注:這些命令也能在 Sybase Adaptive Server中運行,雖然結(jié)果集可能看起來有點不同。

例如,下面是在Northwind 數(shù)據(jù)庫中對于employees表上的一個行統(tǒng)計的簡單查詢腳本而獲得的I/O統(tǒng)計信息:

SET STATISTICS IO ON
GO
SELECT COUNT(*) FROM employees
GO
SET STATISTICS IO OFF
GO
Results:
---------------
2977

Table ‘Employees’ . Scan count 1,
logical read 53, physical reads 0, readahead reads 0.

這個掃描統(tǒng)計告訴我們掃描執(zhí)行的數(shù)量,邏輯讀顯示的是從緩存中讀出來的頁面的數(shù)量,物理讀顯示的是從磁盤中讀的頁面的數(shù)量,Read-ahead 讀顯示了放置在緩存中用于將來讀操作的頁面數(shù)量。

此外,我們執(zhí)行一個系統(tǒng)存儲過程獲得表大小的統(tǒng)計信息以供我們分析:

sp_spaceused employees
Results:
name rows reserved data index_size unused
-------------- -------- --------- -------
Employees 2977 2008KB 1504KB 448KB 56KB

通過看這些信息我們能得到些什么呢?

這個查詢沒有掃描整個表,在表中的數(shù)據(jù)量超過1.5M字節(jié),而僅僅執(zhí)行了53個邏輯I/O操作就得到了結(jié)果。這表明該查詢發(fā)現(xiàn)了一個可用來計算結(jié)果的索引,并且掃描索引比掃描所有數(shù)據(jù)頁花費更少的I/O操作。

索引頁幾乎全部放在數(shù)據(jù)緩存中,所以物理讀的值是零。這是因為我們之前不久是在employees表上執(zhí)行了其他查詢,此時表和它的索引已經(jīng)被緩存。你的查詢開銷可能有不同。

Microsoft報告沒有read-ahead(預(yù)讀)活動。在這種情況下,數(shù)據(jù)和索引頁已經(jīng)被緩存起來了。當(dāng)對一個很大的表作表掃描時,read-ahead可能會半路插入進來,并且在你的查詢用到它們之前緩存起所需的頁。當(dāng)SQL Server確定你的事務(wù)是順序讀取數(shù)據(jù)庫頁并且認(rèn)為它能預(yù)測到你下一步將用到的頁面時,Real-ahead會自動打開。實際上一個獨立的SQL Server連接在你的進程之前已開始運行并為它緩存數(shù)據(jù)頁。(配置和優(yōu)化read-ahead 參數(shù)已超出這篇文章的討論范圍。

在這個例子中,該查詢已經(jīng)盡可能有效率地執(zhí)行了,不必進一步優(yōu)化。

SET STATISTICS TIME

一個事務(wù)的實耗時間是一個不穩(wěn)定的測量,因為這些時間與在服務(wù)器上其他用戶的活動有關(guān)。然而,相比那些對你的用戶沒有任何意義的數(shù)據(jù)頁數(shù)字,它提供了一些實際的測量。他們關(guān)心等待查詢返回的時間消耗,不關(guān)心數(shù)據(jù)的緩存和有效的read-ahead。SET STATISTICS TIME ON命令報告下面的查詢的實際占用時間和CPU使用情況。執(zhí)行SET STATISTICS TIME OFF禁止這個選項。

SET STATISTICS TIME ON
GO
SELECT COUNT(*) FROM titleauthers
GO
SET STATISTICS TIME OFF
GO
Results:
SQL Server Execution Times;
Cup time=0 ms. Elapsed time=8672 ms.
SQL Server Parse and Compile Time:
Cpu time=10 ms

----------------
25

(1 row(s) affected)

SQL Servre Execution Times:
Cpu time=0 ms.? Elapsed time=10 ms.
SQL Server Parse and Compile Time:
Cup time=0 ms

第一條信息報告了多少使人困惑的占用(實耗)時間,8672豪秒,這個數(shù)據(jù)與我們的腳本不相關(guān),這顯示的是之前一個命令執(zhí)行以來逝去的時間。你可以忽略這條信息。SQL Server僅僅花費10毫秒時間去分析和編譯該查詢。花費0毫秒去執(zhí)行它(在查詢結(jié)果可看到)。其真實的意思是這個查詢所花費的時間太短以至不能計量。最后的信息報告了這個SET STATISTICS TIME OFF命令相關(guān)的分析及編譯花費了0毫秒。你可以忽略這個信息。最重要的信息以加重字體突出顯示。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩av激情 | 国产成人av一区二区三区 | 一本色道久久综合亚洲二区三区 | 欧美一级大片免费看 | 国产精品久久久久久久久免费看 | 高清国产一区二区 | 欧洲国产一区 | 黄色av免费在线播放 | 国产精品美女久久 | 在线观看中文字幕一区 | 麻豆视频传媒 | 免费在线成人av | 亚洲精品乱码久久久久久蜜桃麻豆 | 国产一区二区www | 黄色网址在线播放 | 久久机热这里只有精品 | 黄色片视频免费看 | 午夜欧美一区二区三区在线播放 | 国产精品久久久久久久久免费软件 | 精品久久中文字幕 | 三级黄色片欧美 | 精品久久久久久久久久岛国gif | 国产在线免费观看 | 精品久久久久久久人人人人传媒 | 国产在线看片 | 婷婷综合五月 | 在线观看黄色毛片 | 久久久久99 | 亚洲国产精品久久人人爱 | 精品精品国产三级a∨在线 在线国产精品视频 | 99精品久久久国产一区二区三 | 红桃成人av在线播放 | 日韩精品一区在线观看 | 日韩国产在线 | 日本亚洲欧美 | 久久精品在线观看 | 欧美极品在线播放 | 久久久久久久成人 | 天堂电影在线观看 | 99精品视频在线 | 午夜精品久久久久久99热软件 |