自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server查詢優(yōu)化的實(shí)際操作建議描述

數(shù)據(jù)庫(kù) SQL Server
我們今天主要向大家介紹的是SQL Server查詢優(yōu)化的實(shí)際操作建議,其中包括大結(jié)果集的返回查詢,對(duì)重新編寫查詢的考慮等相關(guān)內(nèi)容的介紹。

此文章主要向大家講述的是SQL Server查詢優(yōu)化的實(shí)際操作建議,在實(shí)際操作中有些查詢本身就對(duì)資源的消耗很大。這與基本的數(shù)據(jù)庫(kù)與索引的相關(guān)問題有關(guān)。這些查詢的效率并不低,因?yàn)镾QL Server查詢優(yōu)化器會(huì)以最有效的可能方式實(shí)現(xiàn)這些查詢。

然而,它們確實(shí)消耗大量資源,而且 Transact-SQL 面向集合的性質(zhì)使這些查詢看起來(lái)效率很低。SQL Server查詢優(yōu)化器的智能水平無(wú)法消除這些構(gòu)造的固有資源成本。與不復(fù)雜的查詢相比,這些查詢的固有成本十分昂貴。雖然 Microsoft® SQL Server™ 2000 使用***的訪問計(jì)劃,但受到基礎(chǔ)構(gòu)造可能性的限制。例如,下列類型的查詢可能占用大量資源:

返回大結(jié)果集的查詢

高度不唯一的 WHERE 子句

不過有一些針對(duì)優(yōu)化查詢和提高查詢性能的建議,其中包括:

添加更多的內(nèi)存(尤其是如果服務(wù)器運(yùn)行許多復(fù)雜查詢而且其中幾個(gè)查詢執(zhí)行很慢)。

在有多個(gè)處理器的計(jì)算機(jī)上運(yùn)行 SQL Server。多個(gè)處理器使 SQL Server 得以利用并行查詢。

考慮重新編寫查詢

如果查詢使用游標(biāo),則確定如果使用效率更高的游標(biāo)類型(如快速只進(jìn)游標(biāo))或單純查詢能否更有效地編寫游標(biāo)查詢。單純查詢的性能一般優(yōu)于游標(biāo)操作。一組游標(biāo)語(yǔ)句通常是一個(gè)外循環(huán)操作,在此操作中,一旦使用內(nèi)部語(yǔ)句便開始處理外循環(huán)內(nèi)的每行,因此可考慮使用 GROUP BY 或 CASE 語(yǔ)句或改為使用子查詢。

如果應(yīng)用程序使用循環(huán),可考慮在查詢內(nèi)放入循環(huán)。應(yīng)用程序常包含帶參數(shù)化查詢的循環(huán),該循環(huán)執(zhí)行許多次并要求運(yùn)行應(yīng)用程序的計(jì)算機(jī)與 SQL Server 之間有網(wǎng)絡(luò)往返。可改為使用臨時(shí)表創(chuàng)建一個(gè)更復(fù)雜的查詢。只需提供一個(gè)網(wǎng)絡(luò)往返,SQL Server查詢優(yōu)化器即會(huì)更好地優(yōu)化這個(gè)查詢。

不要對(duì)同一查詢內(nèi)的單個(gè)表使用多個(gè)別名以模擬索引交叉。模擬索引交叉已沒有必要,因?yàn)?SQL Server 會(huì)自動(dòng)考慮索引交叉并且可以在同一查詢內(nèi)的相同表上使用多個(gè)索引。例如,給出下列示例查詢:

  1. SELECT * FROM lineitem WHERE partkey BETWEEN 17000  
  2. AND 17100 AND shipdate BETWEEN '1/1/1994' AND '1/31/1994"  

SQL Server 可以在 partkey 和 shipdate 列上都使用索引,然后在兩個(gè)子集之間執(zhí)行哈希匹配以獲得索引交叉。

只在必要時(shí)才使用查詢提示。若查詢使用在 SQL Server 早期版本上執(zhí)行的提示,則應(yīng)在不指定提示的情況下對(duì)該查詢進(jìn)行測(cè)試。提示會(huì)防礙SQL Server查詢優(yōu)化器選擇更好的執(zhí)行計(jì)劃。

利用 query governor 配置選項(xiàng)和設(shè)置??梢允褂?query governor 配置選項(xiàng)阻止執(zhí)行長(zhǎng)時(shí)間運(yùn)行的查詢,從而防止消耗系統(tǒng)資源。默認(rèn)情況下,query governor 配置選項(xiàng)允許執(zhí)行所有查詢,而不考慮查詢所需的時(shí)間。

然而,可以將查詢調(diào)控器設(shè)置到***秒數(shù),以允許執(zhí)行所有連接的所有查詢或只允許執(zhí)行特定連接的查詢。查詢調(diào)控器基于估計(jì)的查詢成本而不是實(shí)際的已用時(shí)間,因此沒有任何運(yùn)行時(shí)開銷。它還在長(zhǎng)時(shí)間運(yùn)行的查詢開始前便將其停止,而不是先運(yùn)行這些查詢直到達(dá)到某些預(yù)定義的限制為止。

【編輯推薦】

  1. SQL Server 2000 數(shù)據(jù)庫(kù)的版本有哪些?
  2. SQL Server 瀏覽器的正確應(yīng)用
  3. SQL Server刪除群集的實(shí)例演示
  4. SQL Server主鍵列的正確查看方式
  5. SQL Server數(shù)據(jù)庫(kù)與XML支持的正確解析經(jīng)典版
責(zé)任編輯:佚名 來(lái)源: 驅(qū)動(dòng)之家
相關(guān)推薦

2010-06-28 13:27:33

SQL Server視

2010-07-05 12:21:57

SQL Server記

2010-07-16 11:10:52

SQL server

2010-07-07 11:03:21

SQL Server索

2010-07-21 15:22:07

2010-05-27 16:12:10

MySQL索引

2010-05-26 14:06:44

MySQL查詢

2010-05-17 16:52:14

MySQL limit

2010-05-12 11:27:01

MySQL SQL

2010-06-28 12:39:14

SQL Server數(shù)

2010-07-23 09:25:50

SQL Server導(dǎo)

2010-03-29 15:57:07

Oracle exp備

2010-12-07 09:20:44

MySQL limit

2010-06-28 12:27:35

SQL Server

2010-05-21 14:56:53

MySQL聯(lián)表查詢優(yōu)化

2010-06-30 17:56:06

2010-06-17 12:26:51

SQL Server索

2010-07-12 10:13:44

SQL Server表

2010-05-11 09:51:57

MySQL表修改

2010-06-18 08:30:48

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)