欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

總結(jié)SQL執(zhí)行進(jìn)展優(yōu)化方法

 更新時(shí)間:2015年08月17日 15:52:42   投稿:lijiao  
談到優(yōu)化就必然要涉及索引,就像要講鎖必然要說事務(wù)一樣,建議讀者先了解一下索引。

在本文中,小編將與大家重點(diǎn)探討SQL執(zhí)行進(jìn)展優(yōu)化的方法。

聚集索引掃描

SELECT * FROM C_SY_Ownedstorm 

聚集索引掃描比表掃描快

聚集索引掃描:發(fā)生于聚集表,也相當(dāng)于全表掃描操作,但在針對(duì)聚集列的條件等操作時(shí),效率會(huì)較好。

表掃描

SELECT *  FROM #temp 

表掃描:發(fā)生于堆表,并且沒有可用的索引時(shí),會(huì)發(fā)生表掃描,表示整個(gè)表掃描一次。

測(cè)試SQL

CREATE TABLE t1(c1 INT, c2 VARCHAR (8000)); 
 
 GO 
 
 DECLARE @a INT; 
 
 SELECT @a = 1; 
 
 WHILE (@a <= 5000) 
 
 BEGIN       
 
   INSERT INTO t1 VALUES (@a, replicate('a', 5000)) 
 
   SELECT @a = @a + 1 
 
 END 
 
 GO 
SELECT count(1) FROM t1 
 
group by c1 

哈希匹配:

哈希匹配的作用就是把它右側(cè)的兩個(gè)表中行數(shù)比較少的那個(gè)經(jīng)過哈希算法形成一個(gè)哈希表,然后再有另一個(gè)數(shù)據(jù)行數(shù)比較大的表來之前形成的哈希表中匹配查找數(shù)據(jù),大體上就是這個(gè)么流程。但是哈希匹配操作的出現(xiàn)一定要提高我們的警惕,當(dāng)哈希匹配右側(cè)的兩個(gè)表中的數(shù)據(jù)有一個(gè)比另一個(gè)明顯的少的時(shí)候,哈希匹配的效率會(huì)比較高,反之就會(huì)影響效率。出現(xiàn)哈希匹配大概有這么幾個(gè)情況:

有缺失或者不正確的索引

缺少where字句

在where子句中有對(duì)列的類型轉(zhuǎn)換或者數(shù)據(jù)操作,這樣就不能使用索引了

雖說哈希匹配在某些情況下效率會(huì)比較高,但是這并不意味著沒有更好的來提高這個(gè)查詢的效率,比如添加適當(dāng)?shù)乃饕蛘咄ㄟ^where語(yǔ)句來減少數(shù)據(jù)量等方法。換句話說,當(dāng)出現(xiàn)哈希匹配這個(gè)操作的時(shí)候,我們要引起注意,看看是否還有別的方法來提高查詢效率,如果沒有的話,或許哈希匹配就是最好的選擇了。

聚集索引查找:

CREATE UNIQUE CLUSTERED INDEX _Id 
 
ON t1(c1) 
 
select * from t1 
 
where c1=3 

排序:

排序是消耗性能的,sql server中排序是在數(shù)據(jù)找出來以后在進(jìn)行排序的。

select * from t1 
 order by desc 

循環(huán)嵌套

對(duì)于使用簡(jiǎn)單內(nèi)連接的小數(shù)據(jù)量表,嵌套循環(huán)是最佳策略。最適合兩個(gè)表的記錄數(shù)差別非常大,并且在連接的列上都有索引的情況。嵌套循環(huán)連接所需的I/O和比較都是最少的。

嵌套循環(huán)在外表(往往是小數(shù)據(jù)量的表)中每次循環(huán)一個(gè)記錄,然后在內(nèi)表中查找所匹配的記錄并輸出。有很多關(guān)于嵌套循環(huán)策略的名字。例如,對(duì)整個(gè)表或索引進(jìn)行查詢,稱為Naive(無知的)嵌套循環(huán)連接。使用正常索引或臨時(shí)索引時(shí),被稱為索引嵌套循環(huán)連接或臨時(shí)索引嵌套循環(huán)連接。

合并連接

合并連接也是在讀的同時(shí)對(duì)兩個(gè)存儲(chǔ)輸入的一行進(jìn)行比較。在每個(gè)步驟中,比較每個(gè)輸入的下一行。如果兩行是相同,輸出一個(gè)連接后的行并繼續(xù)。如果行是不同的,舍棄兩個(gè)輸入行中較少的那個(gè)并繼續(xù)。因?yàn)檩斎胧谴鎯?chǔ),連接舍棄的任何行必須比兩個(gè)輸入中任何剩下的行要小,因此可以永不連接。合并連接不需要對(duì)兩個(gè)輸入中的每一行掃描。只要到了兩個(gè)輸入中的某一個(gè)的末尾,合并連接就會(huì)停止掃描。

嵌套循環(huán)連接總的消耗和在輸入表中行的乘積成比例,不同于嵌套循環(huán)連接,合并連接的表最多讀一次,總的消耗和輸入行數(shù)的總數(shù)成正比例,因此何必連接對(duì)于大量的輸入是較好的選擇。

以上就是小編對(duì)SQL執(zhí)行進(jìn)展優(yōu)化方法進(jìn)行的總結(jié),希望大家能有所收獲。

相關(guān)文章

  • union組合結(jié)果集時(shí)的order問題

    union組合結(jié)果集時(shí)的order問題

    如果能確定各查詢結(jié)果不會(huì)有重復(fù)的項(xiàng),最好就帶上all,因?yàn)檫@樣還是可以提高一些效率的。
    2009-09-09
  • 如何查看SQLSERVER中某個(gè)查詢用了多少TempDB空間

    如何查看SQLSERVER中某個(gè)查詢用了多少TempDB空間

    最近幫助客戶做sql優(yōu)化的過程中,發(fā)現(xiàn)客戶的TempDB存在非常大的壓力,經(jīng)過排查是發(fā)現(xiàn)某些語(yǔ)句對(duì)TempDB的巨量使用所導(dǎo)致。那么如何才能排查出來呢,我們來探討下。
    2014-08-08
  • 刪除Table表中的重復(fù)行的方法

    刪除Table表中的重復(fù)行的方法

    在寫SQL的時(shí)候經(jīng)常會(huì)有這樣的需求: 在一個(gè)Table中會(huì)有多條重復(fù)的數(shù)據(jù),如何有效的取出來不重復(fù)的數(shù)據(jù),或者是刪除掉重復(fù)的數(shù)據(jù),或者取出某列重復(fù)值的第一條數(shù)據(jù).
    2010-06-06
  • 深入SQL Server 跨數(shù)據(jù)庫(kù)查詢的詳解

    深入SQL Server 跨數(shù)據(jù)庫(kù)查詢的詳解

    本篇文章是對(duì)SQL Server中的跨數(shù)據(jù)庫(kù)查詢進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • sqlserver 模糊查詢常用方法

    sqlserver 模糊查詢常用方法

    LIKE 關(guān)鍵字搜索與指定模式匹配的字符串、日期或時(shí)間值。LIKE 關(guān)鍵字使用常規(guī)表達(dá)式包含值所要匹配的模式。模式包含要搜索的字符串,字符串中可包含四種通配符的任意組合。
    2010-09-09
  • SQL Server的死鎖說明

    SQL Server的死鎖說明

    死鎖是導(dǎo)致數(shù)據(jù)庫(kù)中的競(jìng)爭(zhēng)性并發(fā)鎖,通常在多步驟事務(wù)中。當(dāng)兩個(gè)或多個(gè)任務(wù)永久相互阻止時(shí),每個(gè)任務(wù)都鎖定了其他任務(wù)嘗試鎖定的資源,就會(huì)發(fā)生死鎖。本文主要介紹了SQL Server的死鎖,感興趣的朋友可以參考閱讀
    2023-04-04
  • SQLSERVER中忽略索引提示

    SQLSERVER中忽略索引提示

    這篇文章主要介紹了SQLSERVER中如何忽略索引提示,需要的朋友可以參考下
    2014-11-11
  • windows?sql?server如何徹底卸載干凈

    windows?sql?server如何徹底卸載干凈

    很多人在面對(duì)SQL Server出現(xiàn)的一些無法解決的問題時(shí),會(huì)選擇卸載重裝,但是SQL Server卸載不干凈的話,后續(xù)安裝過程會(huì)出現(xiàn)很多問題,下面這篇文章主要給大家介紹了關(guān)于windows?sql?server如何徹底卸載干凈的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • c#連接數(shù)據(jù)庫(kù)及sql2005遠(yuǎn)程連接的方法

    c#連接數(shù)據(jù)庫(kù)及sql2005遠(yuǎn)程連接的方法

    這篇文章主要介紹了c#連接sql數(shù)據(jù)庫(kù)及sql2005遠(yuǎn)程連接的方法,大家參考使用吧
    2014-01-01
  • sql存儲(chǔ)過程實(shí)例--動(dòng)態(tài)根據(jù)表數(shù)據(jù)復(fù)制一個(gè)表的數(shù)據(jù)到另一個(gè)表

    sql存儲(chǔ)過程實(shí)例--動(dòng)態(tài)根據(jù)表數(shù)據(jù)復(fù)制一個(gè)表的數(shù)據(jù)到另一個(gè)表

    這篇文章主要介紹了sql存儲(chǔ)過程實(shí)例--動(dòng)態(tài)根據(jù)表數(shù)據(jù)復(fù)制一個(gè)表的數(shù)據(jù)到另一個(gè)表的相關(guān)資料,需要的朋友可以參考下
    2017-10-10

最新評(píng)論