中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > 深入分析SqlServer查詢計劃

深入分析SqlServer查詢計劃

熱門標簽:洛陽外呼系統平臺 電銷機器人被曝光 地圖標注一個圓圈怎么用 寧波人工外呼系統有效果嗎 真人語音電銷機器人 400外呼系統合法 如何在地圖標注自己店鋪 怎樣把地圖標注導入公司地址 廣州人工電銷機器人費用

對于SQL Server的優化來說,優化查詢可能是很常見的事情。由于數據庫的優化,本身也是一個涉及面比較的廣的話題, 因此本文只談優化查詢時如何看懂SQL Server查詢計劃。畢竟我對SQL Server的認識有限,如有錯誤,也懇請您在發現后及時批評指正。

首先,打開【SQL Server Management Studio】,輸入一個查詢語句看看SQL Server是如何顯示查詢計劃的吧。
說明:本文所演示的數據庫,是我為一個演示程序專用準備的數據庫,可以在此網頁中下載。

select v.OrderID, v.CustomerID, v.CustomerName, v.OrderDate, v.SumMoney, v.Finished
from  OrdersView as v
where v.OrderDate >= '2010-12-1' and v.OrderDate  '2011-12-1';

其中,OrdersView是一個視圖,其定義如下:

SELECT   dbo.Orders.OrderID, dbo.Orders.CustomerID, dbo.Orders.OrderDate, 
      dbo.Orders.SumMoney, dbo.Orders.Finished, 
      ISNULL(dbo.Customers.CustomerName, N'') AS CustomerName
FROM     dbo.Orders LEFT OUTER JOIN
        dbo.Customers ON dbo.Orders.CustomerID = dbo.Customers.CustomerID

對于前一句查詢,SQL Server給出的查詢計劃如下(點擊工具欄上的【顯示估計的執行計劃】按鈕):

從這個圖中,我們至少可以得到3個有用的信息:

1. 哪些執行步驟花費的成本比較高。顯然,最右邊的二個步驟的成本是比較高的。
2. 哪些執行步驟產生的數據量比較多。對于每個步驟所產生的數據量, SQL Server的執行計劃是用【線條粗細】來表示的,因此也很容易地從分辨出來。
3. 每一步執行了什么樣的動作。

對于一個比較慢的查詢來說,我們通常要知道哪些步驟的成本比較高,進而,可以嘗試一些改進的方法。 一般來說,如果您不能通過:提高硬件性能或者調整OS,SQL Server的設置之類的方式來解決問題,那么剩下的可選方法通常也只有以下這些了:

1. 為【scan】這類操作增加相應字段的索引。
2. 有時重建索引或許也是有效的,具體情形請參考后文。
3. 調整語句結構,引導SQL Server采用其它的查詢方案去執行。
4. 調整表結構(分表或者分區)。

下面再來說說一些很重要的理論知識,這些內容對于執行計劃的理解是很有幫助的。

回到頂部SQL Server 查找記錄的方法

說到這里,不得不說SQL Server的索引了。SQL Server有二種索引:聚集索引和非聚集索引。二者的差別在于:【聚集索引】直接決定了記錄的存放位置, 或者說:根據聚集索引可以直接獲取到記錄。【非聚集索引】保存了二個信息:1.相應索引字段的值,2.記錄對應聚集索引的位置(如果表沒有聚集索引則保存記錄指針)。 因此,如果能通過【聚集索引】來查找記錄,顯然也是最快的。

SQL Server 會有以下方法來查找您需要的數據記錄:

1. 【Table Scan】:遍歷整個表,查找所有匹配的記錄行。這個操作將會一行一行的檢查,當然,效率也是最差的。
2. 【Index Scan】:根據索引,從表中過濾出來一部分記錄,再查找所有匹配的記錄行,顯然比第一種方式的查找范圍要小,因此比【Table Scan】要快。
3. 【Index Seek】:根據索引,定位(獲取)記錄的存放位置,然后取得記錄,因此,比起前二種方式會更快。
4. 【Clustered Index Scan】:和【Table Scan】一樣。注意:不要以為這里有個Index,就認為不一樣了。 其實它的意思是說:按聚集索引來逐行掃描每一行記錄,因為記錄就是按聚集索引來順序存放的。 而【Table Scan】只是說:要掃描的表沒有聚集索引而已,因此這二個操作本質上也是一樣的。
5. 【Clustered Index Seek】:直接根據聚集索引獲取記錄,最快!

所以,當發現某個查詢比較慢時,可以首先檢查哪些操作的成本比較高,再看看那些操作在查找記錄時, 是不是【Table Scan】或者【Clustered Index Scan】,如果確實和這二種操作類型有關,則要考慮增加索引來解決了。 不過,增加索引后,也會影響數據表的修改動作,因為修改數據表時,要更新相應字段的索引。所以索引過多,也會影響性能。 還有一種情況是不適合增加索引的:某個字段用0或1表示的狀態。例如可能有絕大多數是1,那么此時加索引根本就沒有意義。 這時只能考慮為0或者1這二種情況分開來保存了,分表或者分區都是不錯的選擇。

如果不能通過增加索引和調整表來解決,那么可以試試調整語句結構,引導SQL Server采用其它的查詢方案去執行。 這種方法要求: 1.對語句所要完成的功能很清楚, 2.對要查詢的數據表結構很清楚, 3.對相關的業務背景知識很清楚。 如果能通過這種方法去解決,當然也是很好的解決方法了。不過,有時SQL Server比較智能,即使你調整語句結構,也不會影響它的執行計劃。

如何比較二個相同功能的SQL語句的性能好壞呢,我建議采用二種方法: 1. 直接把二個查詢語句放在【SQL Server Management Studio】,然后去看它們的【執行計劃】,SQL Server會以百分比的方式告訴你二個查詢的【查詢開銷】。 這種方法簡單,通常也是可以參考的,不過,有時也會不準,具體原因請接著往下看(可能索引統計信息過舊)。
2. 根據真實的程序調用,寫相應的測試代碼去調用:這種方法就麻煩一些,但是它更能代表現實調用情況, 得到的結果也是更具有參考價值的,因此也是值得的。

回到頂部SQL Server Join 方式

在SQL Server中,每個join命令,都會在內部執行時采用三種更具體的方式來運行:

1. 【Nested Loops join】,如果一個聯接輸入很小,而另一個聯接輸入很大而且已在其聯接列上創建了索引, 則索引 Nested Loops 連接是最快的聯接操作,因為它們需要的 I/O 和比較都最少。

嵌套循環聯接也稱為“嵌套迭代”,它將一個聯接輸入用作外部輸入表(顯示為圖形執行計劃中的頂端輸入),將另一個聯接輸入用作內部(底端)輸入表。外部循環逐行處理外部輸入表。內部循環會針對每個外部行執行,在內部輸入表中搜索匹配行。可以用下面的偽碼來理解:

foreach(row r1 in outer table)
  foreach(row r2 in inner table)
    if( r1, r2 符合匹配條件 )
      output(r1, r2);

最簡單的情況是,搜索時掃描整個表或索引;這稱為“單純嵌套循環聯接”。如果搜索時使用索引,則稱為“索引嵌套循環聯接”。如果將索引生成為查詢計劃的一部分(并在查詢完成后立即將索引破壞),則稱為“臨時索引嵌套循環聯接”。查詢優化器考慮了所有這些不同情況。

如果外部輸入較小而內部輸入較大且預先創建了索引,則嵌套循環聯接尤其有效。在許多小事務中(如那些只影響較小的一組行的事務),索引嵌套循環聯接優于合并聯接和哈希聯接。但在大型查詢中,嵌套循環聯接通常不是最佳選擇。

2. 【Merge Join】,如果兩個聯接輸入并不小但已在二者聯接列上排序(例如,如果它們是通過掃描已排序的索引獲得的),則合并聯接是最快的聯接操作。如果兩個聯接輸入都很大,而且這兩個輸入的大小差不多,則預先排序的合并聯接提供的性能與哈希聯接相近。但是,如果這兩個輸入的大小相差很大,則哈希聯接操作通常快得多。

合并聯接要求兩個輸入都在合并列上排序,而合并列由聯接謂詞的等效 (ON) 子句定義。通常,查詢優化器掃描索引(如果在適當的一組列上存在索引),或在合并聯接的下面放一個排序運算符。在極少數情況下,雖然可能有多個等效子句,但只用其中一些可用的等效子句獲得合并列。

由于每個輸入都已排序,因此 Merge Join 運算符將從每個輸入獲取一行并將其進行比較。例如,對于內聯接操作,如果行相等則返回。如果行不相等,則廢棄值較小的行并從該輸入獲得另一行。這一過程將重復進行,直到處理完所有的行為止。

合并聯接操作可以是常規操作,也可以是多對多操作。多對多合并聯接使用臨時表存儲行(會影響效率)。如果每個輸入中有重復值,則在處理其中一個輸入中的每個重復項時,另一個輸入必須重繞到重復項的開始位置。 可以創建唯一索引告訴SQL Server不會有重復值。

如果存在駐留謂詞,則所有滿足合并謂詞的行都將對該駐留謂詞取值,而只返回那些滿足該駐留謂詞的行。

合并聯接本身的速度很快,但如果需要排序操作,選擇合并聯接就會非常費時。然而,如果數據量很大且能夠從現有 B 樹索引中獲得預排序的所需數據,則合并聯接通常是最快的可用聯接算法。

3. 【Hash Join】,哈希聯接可以有效處理未排序的大型非索引輸入。它們對復雜查詢的中間結果很有用,因為: 1. 中間結果未經索引(除非已經顯式保存到磁盤上然后創建索引),而且通常不為查詢計劃中的下一個操作進行適當的排序。 2. 查詢優化器只估計中間結果的大小。由于對于復雜查詢,估計可能有很大的誤差,因此如果中間結果比預期的大得多,則處理中間結果的算法不僅必須有效而且必須適度弱化。

哈希聯接可以減少使用非規范化。非規范化一般通過減少聯接操作獲得更好的性能,盡管這樣做有冗余之險(如不一致的更新)。哈希聯接則減少使用非規范化的需要。哈希聯接使垂直分區(用單獨的文件或索引代表單個表中的幾組列)得以成為物理數據庫設計的可行選項。

哈希聯接有兩種輸入:生成輸入和探測輸入。查詢優化器指派這些角色,使兩個輸入中較小的那個作為生成輸入。

哈希聯接用于多種設置匹配操作:內部聯接;左外部聯接、右外部聯接和完全外部聯接;左半聯接和右半聯接;交集;聯合和差異。此外,哈希聯接的某種變形可以進行重復刪除和分組,例如 SUM(salary) GROUP BY department。這些修改對生成和探測角色只使用一個輸入。

哈希聯接又分為3個類型:內存中的哈希聯接、Grace 哈希聯接和遞歸哈希聯接。

內存中的哈希聯接:哈希聯接先掃描或計算整個生成輸入,然后在內存中生成哈希表。根據計算得出的哈希鍵的哈希值,將每行插入哈希存儲桶。如果整個生成輸入小于可用內存,則可以將所有行都插入哈希表中。生成階段之后是探測階段。一次一行地對整個探測輸入進行掃描或計算,并為每個探測行計算哈希鍵的值,掃描相應的哈希存儲桶并生成匹配項。

Grace 哈希聯接:如果生成輸入大于內存,哈希聯接將分為幾步進行。這稱為“Grace 哈希聯接”。每一步都分為生成階段和探測階段。首先,消耗整個生成和探測輸入并將其分區(使用哈希鍵上的哈希函數)為多個文件。對哈希鍵使用哈希函數可以保證任意兩個聯接記錄一定位于相同的文件對中。因此,聯接兩個大輸入的任務簡化為相同任務的多個較小的實例。然后將哈希聯接應用于每對分區文件。

遞歸哈希聯接:如果生成輸入非常大,以至于標準外部合并的輸入需要多個合并級別,則需要多個分區步驟和多個分區級別。如果只有某些分區較大,則只需對那些分區使用附加的分區步驟。為了使所有分區步驟盡可能快,將使用大的異步 I/O 操作以便單個線程就能使多個磁盤驅動器繁忙工作。

在優化過程中不能始終確定使用哪種哈希聯接。因此,SQL Server 開始時使用內存中的哈希聯接,然后根據生成輸入的大小逐漸轉換到 Grace 哈希聯接和遞歸哈希聯接。
如果優化器錯誤地預計兩個輸入中哪個較小并由此確定哪個作為生成輸入,生成角色和探測角色將動態反轉。哈希聯接確保使用較小的溢出文件作為生成輸入。這一技術稱為“角色反轉”。至少一個文件溢出到磁盤后,哈希聯接中才會發生角色反轉。

說明:您也可以顯式的指定聯接方式,SQL Server會盡量尊重您的選擇。比如你可以這樣寫:inner loop join, left outer merge join, inner hash join
但是,我還是建議您不要這樣做,因為SQL Server的選擇基本上都是正確的,不信您可以試一下。

好了,說了一大堆理論東西,再來個實際的例子解釋一下吧。

回到頂部更具體執行過程

前面,我給出一張圖片,它反映了SQL Server在執行某個查詢的執行計劃,但它反映的信息可能不太細致,當然,您可以把鼠標指標移動某個節點上,會有以下信息出現:

剛好,我裝的是中文版的,上面都是漢字,我也不多說了。我要說的是另一種方式的執行過程,比這個包含更多的執行信息, 而且是實際的執行情況。(當然,您也可以繼續使用圖形方式,在運行查詢前點擊工具欄上的【包括實際的執行計劃】按鈕)

讓我們再次回到【SQL Server Management Studio】,輸入以下語句,然后執行。

set statistics profile on 

select v.OrderID, v.CustomerID, v.CustomerName, v.OrderDate, v.SumMoney, v.Finished
from  OrdersView as v
where v.OrderDate >= '2010-12-1' and v.OrderDate  '2011-12-1';

注意:現在加了一句,【set statistics profile on 】,得到的結果如下:

可以從圖片上看到,執行查詢后,得到二個表格,上面的表格顯示了查詢的結果,下面的表格顯示了查詢的執行過程。相比本文的第一張圖片, 這張圖片可能在直觀上不太友好,但是,它能反映更多的信息,而且尤其在比較復雜的查詢時,可能看起來更容易,因為對于復雜的查詢,【執行計劃】的步驟太多,圖形方式會造成圖形過大,不容易觀察。 而且這張執行過程表格能反映2個很有價值的數據(前二列)。

還是來看看這個【執行過程表格】吧。我來挑幾個重要的說一下。
【Rows】:表示在一個執行步驟中,所產生的記錄條數。(真實數據,非預期)
【Executes】:表示某個執行步驟被執行的次數。(真實數據,非預期)
【Stmt Text】:表示要執行的步驟的描述。
【EstimateRows】:表示要預期返回多少行數據。

在這個【執行過程表格】中,對于優化查詢來說,我認為前三列是比較重要的。對于前二列,我上面也解釋了,意思也很清楚。 前二列的數字也大致反映了那些步驟所花的成本,對于比較慢的查詢中,應該留意它們。 【Stmt Text】會告訴你每個步驟做了什么事情。對于這種表格,它所要表達的其實是一種樹型信息(一行就表示在圖形方式下的一個節點), 所以,我建議從最內層開始去讀它們。做為示例,我來解釋一下這張表格它所表達的執行過程。

第5行:【Clustered Index Seek(OBJECT:([MyNorthwind].[dbo].[Customers].[PK_Customers]), SEEK:([MyNorthwind].[dbo].[Customers].[CustomerID]=[MyNorthwind].[dbo].[Orders].[CustomerID]) ORDERED FORWARD)】, 意思是說,SQL Server在對表Customers做Seek操作,而且是按照【Clustered Index Seek】的方式,對應的索引是【PK_Customers】,seek的值來源于[Orders].[CustomerID]

第4行:【Clustered Index Scan(OBJECT:([MyNorthwind].[dbo].[Orders].[PK_Orders]), WHERE:([MyNorthwind].[dbo].[Orders].[OrderDate]>='2010-12-01 00:00:00.000' AND [MyNorthwind].[dbo].[Orders].[OrderDate]'2011-12-01 00:00:00.000'))】, 意思是說,SQL Server在對表Customers做Scan操作,即:最差的【表掃描】的方式,原因是,OrderDate列上沒有索引,所以只能這樣了。

第3行:【Nested Loops(Left Outer Join, OUTER REFERENCES:([MyNorthwind].[dbo].[Orders].[CustomerID]))】, 意思是說,SQL Server把第5行和第4行產生的數據用【Nested Loops】的方式聯接起來,其中Outer表是Orders,要聯接的匹配操作也在第5行中指出了。

第2行:【Compute Scalar(DEFINE:([Expr1006]=isnull([MyNorthwind].[dbo].[Customers].[CustomerName],N'')))】, 意思是說,要執行一個isnull()函數的調用。具體原因請參考本文前部分中給出視圖定義代碼。

第1行:【SELECT [v].[OrderID],[v].[CustomerID],[v].[CustomerName],[v].[OrderDate],[v].[SumMoney],[v].[Finished] FROM [OrdersView] [v] WHERE [v].[OrderDate]>=@1 AND [v].[OrderDate]@2】, 通常第1行就是整個查詢,表示它的返回值。

回到頂部索引統計信息:查詢計劃的選擇依據

前面一直說到【執行計劃】,既然是計劃,就表示要在具體執行前就能確定下來的操作方案。那么SQL Server是如何選擇一個執行計劃的呢? SQL Server怎么知道什么時候該用索引或者用哪個索引呢? 對于SQL Server來說,每當要執行一個查詢時,都要首先檢查這個查詢的執行計劃是否存在緩存中,如果沒有,就要生成一個執行計劃, 具體在產生執行計劃時,并不是看有哪些索引可用(隨機選擇),而是會參考一種被稱為【索引統計信息】的數據。 如果您仔細地看一下前面的執行計劃或者執行過程表格,會發現SQL Server能預估每個步驟所產生的數據量, 正是因為SQL Server能預估這些數據量,SQL Server才能選擇一個它認為最合適的方法去執行查詢過程, 此時【索引統計信息】就能告訴SQL Server這些信息。 說到這里,您是不是有點好奇呢,為了讓您對【索引統計信息】有個感性的認識,我們來看看【索引統計信息】是個什么樣子的。 請在【SQL Server Management Studio】,輸入以下語句,然后執行。

dbcc show_statistics (Products, IX_CategoryID)

得到的結果如下圖:

首先,還是解釋一下命令:【dbcc show_statistics】這個命令可以顯示我們想知道的【索引統計信息】,它需要二個參數,1. 表名,2. 索引名

再來看看命令的結果,它有三個表格組成:
1. 第一個表格,它列出了這個索引統計信息的主要信息。

列名 說明Name統計信息的名稱。Updated上一次更新統計信息的日期和時間。Rows表中的行數。Rows Sampled統計信息的抽樣行數。Steps數據可分成多少個組,與第三個表對應。Density第一個索引列前綴的選擇性(不包括 EQ_ROWS)。Average key length所有索引列的平均長度。String Index如果為“是”,則統計信息中包含字符串摘要索引,以支持為 LIKE 條件估算結果集大小。僅適用于char、varchar、nchar和nvarchar、varchar(max)、nvarchar(max)、text以及ntext數據類型的前導列。

2. 第二個表格,它列出各種字段組合的選擇性,數據越小表示重復越性越小,當然選擇性也就越高。

列名 說明All density索引列前綴集的選擇性(包括 EQ_ROWS)。注意:這個值越小就表示選擇性越高。
如果這個值小于0.1,這個索引的選擇性就比較高,反之,則表示選擇性就不高了。Average length索引列前綴集的平均長度。Columns為其顯示All density和Average length的索引列前綴的名稱。

3. 第三個表格,數據分布的直方圖,SQL Server就是靠它預估一些執行步驟的數據量。

列名 說明RANGE_HI_KEY每個組中的最大值。RANGE_ROWS每組數據組的估算行數,不包含最大值。EQ_ROWS每組數據組中與最大值相等的行的估算數目。DISTINCT_RANGE_ROWS每組數據組中的非重復值的估算數目,不包含最大值。AVG_RANGE_ROWS每組數據組中的重復值的平均數目,不包含最大值,計算公式:RANGE_ROWS / DISTINCT_RANGE_ROWS for DISTINCT_RANGE_ROWS > 0

為了能讓您更好的理解這些數據,尤其是第三組,請看下圖:

當時我在填充測試數據時,故意把CategoryId分為1到8(10是后來臨時加的),每組填充了78條數據。所以【索引統計信息】的第三個表格的數據也都是正確的, 也正是根據這些統計信息,SQL Server才能對每個執行步驟預估相應的數據量,從而影響Join之類的選擇。當然了,在選擇Join方式時, 也要參考第二個表格中字段的選擇性。SQL Server在為查詢生成執行計劃時, 查詢優化器將使用這些統計信息并結合相關的索引來評估每種方案的開銷來選擇最佳的查詢計劃。

再來個例子說明一下統計信息對于查詢計劃的重要性。首先多加點數據,請看以下代碼:

declare @newCategoryId int;
insert into dbo.Categories (CategoryName) values(N'Test statistics');
set @newCategoryId = scope_identity();

declare @count int;
set @count = 0;

while( @count  100000 )
begin
  insert into Products (ProductName, CategoryID, Unit, UnitPrice, Quantity, Remark) 
  values( cast(newid() as nvarchar(50)), @newCategoryId, N'個', 100, @count +1, N'');

  set @count = @count + 1;
end
go

update statistics Products;
go

再來看看索引統計信息:

再來看看同一個查詢,但因為查詢參數值不同時,SQL Server選擇的執行計劃:

select p.ProductId, t.Quantity 
from Products as p left outer join [Order Details] as t on p.ProductId = t.ProductId 
where p.CategoryId = 26;  -- 26 就是最新產生的CategoryId,因此這個查詢會返回10W條記錄

select p.ProductId, t.Quantity 
from Products as p left outer join [Order Details] as t on p.ProductId = t.ProductId 
where p.CategoryId = 6;  -- 這個查詢會返回95條記錄

從上圖可以看出,由于CategoryId的參數值不同,SQL Server會選擇完全不同的執行計劃。統計信息重要性在這里體現的很清楚吧。

創建統計信息后,數據庫引擎對列值(根據這些值創建統計信息)進行排序, 并根據這些值(最多 200 個,按間隔分隔開)創建一個“直方圖”。直方圖指定有多少行精確匹配每個間隔值, 有多少行在間隔范圍內,以及間隔中值的密度大小或重復值的發生率。

SQL Server 2005 引入了對 char、varchar、varchar(max)、nchar、nvarchar、nvarchar(max)、text 和 ntext 列創建的統計信息收集的其他信息。這些信息稱為“字符串摘要”,可以幫助查詢優化器估計字符串模式中查詢謂詞的選擇性。 查詢中有 LIKE 條件時,使用字符串摘要可以更準確地估計結果集大小,并不斷優化查詢計劃。 這些條件包括諸如 WHERE ProductName LIKE '%Bike' 和 WHERE Name LIKE '[CS]heryl' 之類的條件。

既然【索引統計信息】這么重要,那么它會在什么時候生成或者更新呢?事實上,【索引統計信息】是不用我們手工去維護的, SQL Server會自動去維護它們。而且在SQL Server中也有個參數來控制這個更新方式:

統計信息自動功能工作方式

創建索引時,查詢優化器自動存儲有關索引列的統計信息。另外,當 AUTO_CREATE_STATISTICS 數據庫選項設置為 ON(默認值)時, 數據庫引擎自動為沒有用于謂詞的索引的列創建統計信息。

隨著列中數據發生變化,索引和列的統計信息可能會過時,從而導致查詢優化器選擇的查詢處理方法不是最佳的。 例如,如果創建一個包含一個索引列和 1,000 行數據的表,每一行在索引列中的值都是唯一的, 則查詢優化器將把該索引列視為收集查詢數據的好方法。如果更新列中的數據后存在許多重復值, 則該列不再是用于查詢的理想候選列。但是,查詢優化器仍然根據索引的過時分布統計信息(基于更新前的數據),將其視為好的候選列。

當 AUTO_UPDATE_STATISTICS 數據庫選項設置為 ON(默認值)時,查詢優化器會在表中的數據發生變化時自動定期更新這些統計信息。 每當查詢執行計劃中使用的統計信息沒有通過針對當前統計信息的測試時就會啟動統計信息更新。 采樣是在各個數據頁上隨機進行的,取自表或統計信息所需列的最小非聚集索引。 從磁盤讀取一個數據頁后,該數據頁上的所有行都被用來更新統計信息。 常規情況是:在大約有 20% 的數據行發生變化時更新統計信息。但是,查詢優化器始終確保采樣的行數盡量少。 對于小于 8 MB 的表,則始終進行完整掃描來收集統計信息。

采樣數據(而不是分析所有數據)可以將統計信息自動更新的開銷降至最低。 在某些情況下,統計采樣無法獲得表中數據的精確特征。可以使用 UPDATE STATISTICS 語句的 SAMPLE 子句和 FULLSCAN 子句, 控制按逐個表的方式手動更新統計信息時采樣的數據量。FULLSCAN 子句指定掃描表中的所有數據來收集統計信息, 而 SAMPLE 子句用來指定采樣的行數百分比或采樣的行數

在 SQL Server 2005 中,數據庫選項 AUTO_UPDATE_STATISTICS_ASYNC 提供了統計信息異步更新功能。 當此選項設置為 ON 時,查詢不等待統計信息更新,即可進行編譯。而過期的統計信息置于隊列中, 由后臺進程中的工作線程來更新。查詢和任何其他并發查詢都通過使用現有的過期統計信息立即編譯。 由于不存在等待更新后的統計信息的延遲,因此查詢響應時間可預測;但是過期的統計信息可能導致查詢優化器選擇低效的查詢計劃。 在更新后的統計信息就緒后啟動的查詢將使用那些統計信息。這可能會導致重新編譯緩存的計劃(取決于較舊的統計信息版本)。 如果在同一個顯式用戶事務中出現某些數據定義語言 (DDL) 語句(例如,CREATE、ALTER 和 DROP 語句),則無法更新異步統計信息。

AUTO_UPDATE_STATISTICS_ASYNC 選項設置于數據庫級別,并確定用于數據庫中所有統計信息的更新方法。 它只適用于統計信息更新,而無法用于以異步方式創建統計信息。只有將 AUTO_UPDATE_STATISTICS 設置為 ON 時, 將此選項設置為 ON 才有效。默認情況下,AUTO_UPDATE_STATISTICS_ASYNC 選項設置為 OFF。

從以上說明中,我們可以看出,對于大表,還是有可能存在統計信息更新不及時的時候,這時,就可能會影響查詢優化器的判斷了。
有些人可能有個經驗:對于一些慢的查詢,他們會想到重建索引來嘗試解決。其實這樣做是有道理的。 因為,在某些時候一個查詢突然變慢了,可能和統計信息更新不及時有關,進而會影響查詢優化器的判斷。 如果此時重建索引,就可以讓查詢優化器知道最新的數據分布,自然就可以避開這個問題。 還記得我前面用【set statistics profile on】顯示的執行過程表格嗎?注意哦,那個表格就顯示每個步驟的實際數據量和預估的數據量。要不要重建索引,其實我們可以用【set statistics profile on】來看一下,如果實際數據量和預估的數據量的差值比較大, 那么我們可以考慮手工去更新統計信息,然后再去試試。

回到頂部優化視圖查詢

再來說說優化視圖查詢,雖然視圖也是由一個查詢語句定義的,本質上也是一個查詢,但它和一般的查詢語句在優化時,還是有所區別的。 這里主要的區別在于,視圖雖然是由一個查詢語句定義的,但如果只去分析這個查詢定義,可能得到的意義不大,因為視圖多數時候就不是直接使用, 而是在使用前,會加上where語句,或者放在其它語句中供from子句所使用。下面還是舉個例子吧,在我的演示數據庫中有個視圖OrdersView,定義代碼前面有。 我們來看看,如果直接使用這個視圖,會有什么樣的執行計劃出來:

從這個視圖可以看出,SQL Server會對表Orders做全表掃描,應該是很低效的。再來看看下面這個查詢:

從這個執行計劃可以看出,與上面那個就不一樣了。前一個查詢中對Orders表的查找是使用【Clustered Index Scan】的方式, 而現在在使用【Clustered Index Seek】的方式了,最右邊二個步驟的成本的百分比也發生了改變。這樣就足以說明,優化視圖時, 最好能根據實際需求,應用不同的過濾條件,再來決定如何去優化。

再來一個由三個查詢組成的情況來看看這個視圖的執行計劃。

select * from dbo.OrdersView where OrderId = 1;
select * from dbo.OrdersView where CustomerId = 1;
select * from dbo.OrdersView where OrderDate >= '2010-12-1' and OrderDate  '2011-12-1';

很明顯,對于同一個視圖,在不同的過濾條件下,執行計劃的差別很明顯。

推薦閱讀-MSDN文章

索引統計信息
http://msdn.microsoft.com/zh-cn/library/ms190397(SQL.90).aspx

查詢優化建議
http://msdn.microsoft.com/zh-cn/library/ms188722(SQL.90).aspx

用于對運行慢的查詢進行分析的清單
http://msdn.microsoft.com/zh-cn/library/ms177500(SQL.90).aspx

邏輯運算符和物理運算符引用
http://msdn.microsoft.com/zh-cn/library/ms191158(SQL.90).aspx

您可能感興趣的文章:
  • sqlserver關于分頁存儲過程的優化【讓數據庫按我們的意思執行查詢計劃】
  • 教你如何看懂SQL Server查詢計劃

標簽:南昌 珠海 晉中 東營 咸寧 石家莊 煙臺 北海

巨人網絡通訊聲明:本文標題《深入分析SqlServer查詢計劃》,本文關鍵詞  深入分析,SqlServer,查詢,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入分析SqlServer查詢計劃》相關的同類信息!
  • 本頁收集關于深入分析SqlServer查詢計劃的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 山东亚泰机械有限公司| 精密机械加工有限公司| 河南鼎科机械有限公司| 威海泓意机械有限公司| 福建晋工机械有限公司| 晶元精密机械有限公司| 泰州 机械有限公司| 广州大圆机械设备有限公司| 河南省化工机械制造有限公司| 扬州市机械制造有限公司| 江苏爱斯特机械有限公司怎么样 | 柳州市机械有限公司| 杭州恒机械有限公司| 诸城市恒顺机械有限公司| 济南蓝象数控机械有限公司| 泰瑞机械有限公司待遇| 河南起重机有限公司| 广州华臻机械设备有限公司| 上海宏挺机械设备制造有限公司| 张家港 机械有限公司| 佛山市海裕机械有限公司| 河南起重机有限公司| 矿山机械制造有限公司| 上海昶旭包装机械有限公司| 万则盛机械有限公司| 仙游东亚机械有限公司| 常州市良久机械制造有限公司| 德昌机械制造有限公司| 江苏闳业机械有限公司| 烟台瑞进精密机械有限公司| 广东重工建设监理有限公司怎么样| 江苏银华春翔机械制造有限公司 | 苏州安特精密机械有限公司| 徐州七星机械有限公司| 昆山市烽禾升精密机械有限公司 | 上海景林包装机械有限公司| 常州倍安特动力机械有限公司| 天津钢铁贸易有限公司| 无锡秉杰机械有限公司| 厦门 机械有限公司| 通达塑料机械有限公司| 南通 机械 有限公司| 河南旭矿机械有限公司| 南京华创包装机械设备有限公司| 远东机械设备有限公司| 深圳市钢铁有限公司| 上海信烨精密机械有限公司| 烟台天成机械有限公司| 西安工程机械有限公司| 上海起重电机厂有限公司| 江阴市机械制造有限公司| 浙江精密机械有限公司| 铜陵富鑫钢铁有限公司| 山东泰峰起重设备制造有限公司| 青岛橡胶机械有限公司| 江苏苏能机械有限公司| 济南真诺机械有限公司| 青岛泰新机械有限公司| 合肥方圆机械有限公司| 山东平安工程机械有限公司| 慈溪市机械有限公司| 东莞市兆恒机械有限公司| 宁波星箭航天机械有限公司| 江苏申特钢铁有限公司| 合肥起重机械有限公司| 晋江机械制造有限公司| 合肥机械设备有限公司| 北京 机械 有限公司| 河南合力起重机械有限公司| 首钢长白机械有限公司| 徐州华冶机械有限公司| 晋江力达机械有限公司| 青岛鳌福机械有限公司| 诸城市博康机械有限公司| 台州亚格机械有限公司| 长沙远洋机械制造有限公司| 青州市三联重工设备制造有限公司| 青岛橡塑机械有限公司| 柳州工程机械有限公司| 深圳电子机械有限公司| 压机械制造有限公司| 无锡市钢铁有限公司| 力士德机械有限公司| 威海机械制造有限公司| 广西机械设备有限公司| 河北澳森钢铁有限公司| 新金山钢铁有限公司| 南京远景机械有限公司| 杭州莱顿机械有限公司| 温州镇田机械有限公司| 恒泰机械制造有限公司| 芜湖 机械制造有限公司| 机械设备出口有限公司| 佛山市科振机械设备有限公司 | 广东富华重工制造有限公司| 荃胜精密机械有限公司| 中山艾能机械有限公司| 潍坊市通用机械有限公司| 辽宁泰威机械制造有限公司 | 无锡远方机械有限公司| 市瑞港机械有限公司| 上海巨能减速机械有限公司| 潍坊宝润机械有限公司| 青岛科尼乐机械设备有限公司 | 中热机械设备有限公司| 诸城市鼎康机械有限公司| 沈阳机械制造有限公司| 东莞名震机械制造有限公司| 江阴市博越机械有限公司| 浙江正信机械有限公司| 上海东芝机械有限公司| 苏州精创机械有限公司| 宏信机械制造有限公司| 江阴荣兴机械有限公司| 沈阳高新机械有限公司| 布勒机械设备有限公司| 广东重工建设监理有限公司| 河南省浩业矿山机械有限公司| 苏州鼎木机械设备有限公司 | 世翔精密机械制造有限公司| 浙江亿森机械有限公司| 上海紫光机械有限公司| 宁波江北机械有限公司| 圣博液压机械有限公司| 江苏维达机械有限公司| 济宁鑫聚机械有限公司| 迁安鑫达钢铁有限公司| 伟业机械制造有限公司| 昆山优能机械有限公司| 宁波食品机械有限公司| 柳州市宏华机械有限公司| 上海山美重型矿山机械有限公司 | 佛山机械制造有限公司| 诸城市宏宇轻机机械有限公司| 常熟机械制造有限公司| 陆丰机械郑州有限公司| 济南梓鑫机械有限公司| 上海喜曼机械有限公司| 派菲奥机械有限公司| 东莞市业佳精密机械有限公司| 泸州发展机械有限公司| 郑州年旭机械有限公司| 德马科起重机械有限公司| 湖南力诺机械有限公司| 龙腾机械制造有限公司| 广州永晋机械有限公司| 广州众起办公用品有限公司| 圣固 江苏 机械有限公司| 江源机械制造有限公司| 沈阳重工食品有限公司| 张家港市贝尔机械有限公司| 河北冀工机械制造有限公司 | 东莞市千岛机械制造有限公司| 北京明日之星玻璃机械有限公司| 昆山东新力特精密机械有限公司| 汽车销售有限公司起名| 无锡通用机械有限公司| 唐山宏润钢铁有限公司| 长沙中南福鼎机械设备有限公司| 温州 印刷机械有限公司| 厦门升正机械有限公司| 广州市京龙工程机械有限公司| 登福机械(上海)有限公司| 苏州典艺精密机械有限公司| 常德 机械有限公司| 江苏华粮机械有限公司| 艾莎钢铁天津有限公司| 安徽中晨机械有限公司| 常州玫尔机械有限公司| 爱克苏州机械有限公司| 无锡布勒机械有限公司| 安徽远鸿机械自动化有限公司| 淄博协丰机械有限公司| 上海枫信传动机械有限公司| 重庆嘉木机械有限公司| 东莞钰腾机械有限公司| 北京速深机械有限公司| 苏州拓博机械有限公司| 中山市包装机械有限公司| 山东碧海机械有限公司| 济宁恒远机械有限公司| 泰安海松机械有限公司| 郑州企鹅粮油机械有限公司 | 上海港机重工有限公司| 浙江恒通机械有限公司| 上海定盛机械有限公司| 上海舒平精工机械有限公司| 张家港市旺巴巴机械有限公司| 上海 精密机械制造有限公司| 昆山昆成机械有限公司| 上海诚达机械有限公司| 冈热机械常州有限公司| 宁波将军机械有限公司| 天津钢铁销售有限公司| 苏州百勤精密机械有限公司| 河北九江钢铁有限公司| 山西兴宝钢铁有限公司| 广州市赛思达机械设备有限公司| 全精密机械有限公司| 珠海精密机械有限公司| 青岛数控机械有限公司| 泉州市机械有限公司| 莒县长运机械有限公司| 湖南中旺工程机械设备有限公司| 河北正大机械有限公司| 济南弘川包装机械有限公司| 重庆龙文机械设备有限公司| 合肥福晟机械制造有限公司| 安徽方圆机械有限公司| 洛阳洛北重工机械有限公司| 广东恒联食品机械有限公司| 威海机械制造有限公司| 扬州液压机械有限公司| 自动化机械 上海有限公司| 尤工机械设备有限公司| 江西萍乡钢铁有限公司| 福建泉成机械有限公司| 洛阳中收机械装备有限公司| 濮阳机械制造有限公司| 在天精密机械有限公司| 天津市华天世纪机械有限公司| 广西徐重机械有限公司| 金鹰重型工程机械有限公司| 河南万杰食品机械有限公司| 江苏迪鼎机械有限公司| 百赞精密机械有限公司| 三川德青工程机械有限公司| 东莞市宝腾机械有限公司| 上海涟恒精密机械有限公司| 日照港达船舶重工有限公司| 江阴 起重机械有限公司| 山东六丰机械有限公司| 上海机械制造有限公司| 苏州牧天动力机械有限公司| 马钢合肥钢铁有限公司| 广州市汇格机械设备有限公司| 昆山精密机械有限公司| 嵊州市龙威机械制造有限公司| 河南省新乡市矿山起重机有限公司| 南京阿特拉斯机械设备有限公司| 东莞市机械设备有限公司| 云南鑫豪钢铁有限公司| 山东小康机械有限公司| 重庆万凯机械有限公司| 四川久进机械制造有限公司 | 扬州 液压机械有限公司| 三技精密机械有限公司| 江苏祥达机械制造有限公司| 合肥至信机械有限公司| 上海石化机械制造有限公司| 德清恒丰机械有限公司| 萨克米机械有限公司| 徐州世通重工机械制造有限公司 | 天津亨旺机械有限公司| 新乡振动机械有限公司| 大连亨益机械有限公司| 东莞%机械制造有限公司| 宁波甬龙机械有限公司| 山东源鑫农牧机械有限公司| 东莞豪力机械有限公司| 兰州兴元钢铁有限公司| 远大机械制造有限公司| 德丰机械制造有限公司| 建筑工程有限公司起名| 南京恒昌包装机械有限公司 | 江苏中科机械有限公司| 平湖市机械有限公司| 上海承企机械有限公司| 武汉船舶重工有限公司| 广州市佳速精密机械有限公司| 深圳市机械设备有限公司| 贵州机械设备有限公司| 烟台东恒机械有限公司| 湖州二轻机械有限公司| 山东战尔机械有限公司| 温岭华驰机械有限公司| 云南昆鼎机械设备有限公司| 无锡化工机械有限公司| 山东起重机有限公司| 宁波海江机械制造有限公司| 河北液压机械有限公司| 西安普阳机械有限公司| 江苏冶金机械有限公司| 萨克米机械有限公司| 苏州市大华精密机械有限公司| 山东瑞华工程机械有限公司| 扬州市天发试验机械有限公司 | 东莞市金联吹塑机械有限公司| 金韦尔机械有限公司| 常州经编机械有限公司| 世翔精密机械制造有限公司| 新昌县机械有限公司| 浙江鼎业机械设备有限公司| 青岛威尔塑料机械有限公司| 山东金亿机械制造有限公司| 衡阳华意机械有限公司| 诸城市宏宇轻机机械有限公司| 北京龙泰机械设备安装有限公司| 河南明天机械有限公司| 东莞市金联吹塑机械有限公司| 河北食品机械有限公司| 汉邦机械制造有限公司| 上海铮潼起重机电设备有限公司 | 广东富华机械装备制造有限公司| 广西美鹏机械设备有限公司| 宿迁机械制造有限公司| 广州华研精密机械有限公司| 上海纽荷兰农业机械有限公司 | 营口京华钢铁有限公司| 江苏祥达机械制造有限公司| 江苏优远机械有限公司| 大连起重机有限公司| 临沂华立机械有限公司| 亿传玻璃机械有限公司| 杭州中亚机械有限公司招聘| 成都成邦探矿机械设备有限公司| 潍坊机械制造有限公司| 机械(上海)有限公司| 温州杰福机械设备有限公司| 湖北江汉重工有限公司| 郑州明瑞机械设备有限公司| 河南世博机械工程有限公司| 日照瑞荣机械有限公司| 宁波恒阳机械有限公司| 九江益鑫机械有限公司| 重庆茂田机械有限公司| 保定向阳航空精密机械有限公司| 上海塑料机械有限公司| 南通天成机械有限公司| 常州倍安特动力机械有限公司| 永胜机械工业有限公司| 如东通用机械有限公司| 浙江勇力机械有限公司| 杭重工程机械有限公司| 鸿源机械制造有限公司| 昆山市机械有限公司| 常州龙鑫化工机械有限公司 | 精密机械加工有限公司| 河南启瀚机械设备有限公司| 杭州神钢建设机械有限公司| 潍坊天洁机械有限公司| 成都弘邦机械有限公司| 上海杉野机械有限公司| 南京 机械设备 有限公司| 杭州驰林机械有限公司| 江阴市液压机械有限公司| 泰钢钢铁贸易有限公司| 温州市日力轻工机械有限公司| 山东宇冠机械有限公司| 山东永峰钢铁有限公司| 旭恒精工机械制造有限公司| 长春协展机械工业有限公司| 机械进出口有限公司招聘| 宁波德霖机械有限公司| 南通路捷机械有限公司| 上海卓汇机械有限公司| 富世华机械有限公司| 中实洛阳重型机械有限公司实习报告 | 湖南湘船重工有限公司| 布勒机械设备有限公司| 浙江佑天元包装机械制造有限公司| 苏州友众传动机械有限公司| 莱钢永锋钢铁有限公司| 北京大森长空包装机械有限公司| 桂林中天机械有限公司| 武汉东泰盛机械有限公司| 昆山工业机械有限公司| 同向精密机械有限公司| 山东港中钢铁有限公司| 广西徐重机械有限公司| 宜昌 机械有限公司| 湖北襄玉机械有限公司| 深圳数控机械有限公司| 浙江德鹏机械有限公司| 河南 机械制造有限公司| 浩强精密机械有限公司| 广州工程机械有限公司| 上海恒麦食品机械有限公司| 上海钢铁物资有限公司| 江苏宇达机械有限公司| 山东联亿重工有限公司| 矿山机械设备有限公司| 河南省金特振动机械有限公司| 温州镇田机械有限公司| 山东机械设备制造有限公司| 青岛青工机械有限公司| 上海科熙起重设备有限公司| 潍坊威尔顿机械设备有限公司| 浙江速成精密机械有限公司| 瑞安市印刷机械有限公司| 江苏清淮机械有限公司| 江苏泰美环保机械有限公司| 无锡包装机械有限公司| 上海明硕机械有限公司| 北京现代京城工程机械有限公司| 中航国际钢铁贸易有限公司 | 山东三维重工有限公司| 杭州杭达机械有限公司| 台州市鲨鱼食品机械有限公司| 苏州纺织机械有限公司| 佰源机械有限公司欠款| 徐州斗山工程机械有限公司| 河南矿山起重有限公司| 萨克米机械有限公司| 安徽大洋机械有限公司| 上海炬钢机械制造有限公司| 台林机械有限公司 -| 恒源机械制造有限公司| 浙江华天机械有限公司| 河南省邦恩机械制造有限公司 | 中船华南船舶机械有限公司| 广州金宗机械有限公司| 郑州市鼎盛机械制造有限公司| 山东兴源机械有限公司| 无锡润和机械有限公司| 广东达诚机械有限公司| 上海宝日机械制造有限公司| 宜都大一重工有限公司| 玉环双友机械有限公司| 佛山市信虹精密机械有限公司| 苏州传动机械有限公司| 大连铸鸿机械有限公司| 国研机械设备有限公司| 浙江金华机械有限公司| 河南世茂机械制造有限公司 | 佛山创宝包装机械有限公司| 志庆机械设备有限公司| 德丰机械制造有限公司| 抚顺石油机械有限公司| 沧州恒宇机械有限公司| 江西四通重工机械有限公司| 重庆纵横机械有限公司| 浙江勇力机械有限公司| 北京市机械施工有限公司| 重庆动霸机械制造有限公司| 北京现代京城工程机械有限公司| 山东英胜机械有限公司| 无锡兆立精密机械有限公司| 山东日发纺织机械有限公司| 京山 机械有限公司| 成都 机械有限公司| 吴江精密机械有限公司| 青岛 重工 有限公司| 新乡市福泽机械设备有限公司| 好利用机械有限公司| 佛山市包装机械有限公司| 机械有限公司 机械手| 泉州泉盛机械有限公司| 河北输送机械有限公司| 烟台精密机械有限公司| 昆山日日先精密机械有限公司| 郑州华隆机械有限公司| 河南龙工机械制造有限公司| 上海东芝机械有限公司| 河北清大环保机械有限公司| 邢台机械轧辊有限公司| 印刷包装机械有限公司| 常州东进机械有限公司| 吉林鑫达钢铁有限公司地址| 河南省矿山起重有限公司| 诸城市华钢机械有限公司| 金属制品有限公司起名| 苏州恩贝德机械有限公司| 荆州祥达机械制造有限公司 | 常州市永明机械制造有限公司| 中核 天津 机械有限公司| 鼎龙机械制造有限公司| 南通路捷机械有限公司| 山东瑞华机械有限公司| 洛阳卓格哈斯机械有限公司| 常州光明包装机械有限公司| 德国arku机械制造有限公司| 苏州华尔普机械有限公司| 四平方向机械有限公司| 新疆机械设备有限公司| 德莱赛机械苏州有限公司| 金达机械制造有限公司| 昆山烽禾升精密机械有限公司| 太原重型机械有限公司| 山西风源机械制造有限公司| 富阳液压机械有限公司| 上海春田机械有限公司| 无锡市机械制造有限公司| 山东巨威机械有限公司| 温州宇英机械有限公司| 锦州俏牌机械有限公司| 诸城市宏宇轻机机械有限公司| 艺达精密机械有限公司| 盐城海德机械制造有限公司| 山东威曼机械有限公司| 格润德机械制造有限公司| 广州市天烨食品机械有限公司| 东莞信易电热机械有限公司| 烟台绿林机械设备制造有限公司| 上海恒麦食品机械有限公司| 龙扬机械)有限公司| 济南快克数控机械有限公司| 鸿江机械制造有限公司| 上海博储机械工业有限公司| 宁波机械制造有限公司| 长春泰盟机械制造有限公司| 临工工程机械有限公司| 昆山烽禾升精密机械有限公司| 张家港市家源机械有限公司| 广州国伟机械有限公司| 广州市 机械有限公司| 厦门船舶重工有限公司| 东阳机械设备制造有限公司| 泉州宝隆机械有限公司| 济南梓鑫机械有限公司| 河南重工机械有限公司| 江阴市洪腾机械有限公司| 浙江德鹏机械有限公司| 衢州巨鑫机械有限公司| 珠海精密机械有限公司| 宁夏瑞光机械有限公司| 青岛 木工机械有限公司| 全椒 机械有限公司| 盾建重工制造有限公司| 山本机械苏州有限公司| 天津敏信机械有限公司| 浙江齐鲤机械有限公司| 广州国伟机械有限公司| 江苏宇达机械有限公司| 武汉益达建设机械有限公司| 深圳步先包装机械有限公司 | 欧诺机械 有限公司| 江苏贝斯特数控机械有限公司| 中山市机械有限公司| 南兴木工机械有限公司| 无锡润和机械有限公司| 南通国盛精密机械有限公司| 东莞培锋精密机械有限公司| 天津艾尔特精密机械有限公司| 常熟市机械有限公司| 佛山市创利宝包装机械有限公司| 东莞市鼎祥通用机械设备有限公司 | 新乡市特昌振动机械有限公司| 东光包装机械有限公司| 东莞亮剑机械有限公司| 郑州市同鼎机械设备有限公司| 山西贝斯特机械制造有限公司| 安阳市赛尔德精工机械有限公司| 日照机械制造有限公司| 安阳锻压机械工业有限公司| 潍坊市贝特工程机械有限公司| 百事德机械江苏有限公司| 济南 液压机械有限公司| 武汉船舶重工有限公司| 江苏银华春翔机械制造有限公司| 青岛德固特机械制造有限公司 | 成都机械设备有限公司| 蚌埠行星机械有限公司| 无锡森本精密机械有限公司| 夹江水工机械有限公司| 南京竣业过程机械设备有限公司| 济南精美机械设备有限公司| 潍坊圣旋机械有限公司| 郑州中联收获机械有限公司| 焦作 机械 有限公司| 昆山昆成机械有限公司| 山东领品机械有限公司| 桂林正东机械制造有限公司| 上海铁杉机械有限公司| 山东岳工机械有限公司| 安徽精密机械有限公司| 新乡市矿山起重机械有限公司| 山东鲁一机械有限公司| 江阴市液压机械有限公司| 贵州运东机械有限公司| 大连矢岛机械有限公司| 吉林鑫达钢铁有限公司| 无锡布勒机械有限公司| 宁波康博机械有限公司| 无锡包装机械有限公司| 浙江顶峰机械有限公司| 西安筑路机械有限公司| 河北液压机械有限公司| 天工工程机械有限公司| 河南旭矿机械有限公司| 河南世博机械工程有限公司| 上海北阅机械设备有限公司| 北京道森起点信息技术有限公司 | 长春协展机械工业有限公司| 深圳市鑫宏伟机械设备有限公司| 合浦惠利机械有限公司| 山东山建机械有限公司| 昆山乙盛机械工业有限公司电话| 振华真空机械有限公司| 台州万州机械有限公司| 昆山铭世特精密机械有限公司| 宁波梦神床垫机械有限公司| 西安筑路机械有限公司| 服装有限公司起名大全| 滦南华瑞钢铁有限公司| 广东华冠钢铁有限公司| 济南食品机械有限公司| 扬州永瑞机械有限公司| 厦门厦工重工有限公司| 遵化建龙钢铁有限公司| 上海起重机有限公司| 中船重工环境工程有限公司怎么样| 杭州速捷机械有限公司| 济南艺高数控机械有限公司| 福建省晋江市和盛机械有限公司 | 天津新港船舶重工有限公司| 青岛华牧机械有限公司| 北京起重设备有限公司| 安阳三一机械有限公司| 苏州苏媛爱德克机械有限公司| 河北天冠环保机械有限公司| 临沂盛德机械有限公司| 无锡旭英机械有限公司| 马钢合肥钢铁有限公司| 机械有限公司 张家港| 江苏江南起重机械有限公司| 山西中阳钢铁有限公司| 新兴重工天津国际贸易有限公司| 富阳 机械有限公司| 河南起重机有限公司| 四川华为钢铁有限公司| 大连船舶重工有限公司| 山东大启机械有限公司| 长江液压机械有限公司| 成都鑫泽机械有限公司| 上海铁杉机械有限公司| 温州印刷机械有限公司| 上海定盛机械有限公司| 重庆辉昌机械设备有限公司| 东莞市瑞辉机械制造有限公司| 深圳 机械设备有限公司| 湖南星邦重工有限公司| 上海志程机械设备有限公司| 瑞安市印刷机械有限公司| 利星行机械昆山有限公司| 科润达机械有限公司| 江苏隆达机械设备有限公司| 兰州机械设备有限公司| 洛阳机械制造有限公司| 东莞市世翔精密机械制造有限公司| 山西机械设备有限公司| 临沂新天力机械有限公司| 上海科熙起重设备有限公司| 鑫磊机械制造有限公司| 博硕机械制造有限公司| 深圳精密机械有限公司| 扬州冶金机械有限公司| 浙江汉克机械有限公司| 东莞凯格精密机械有限公司| 上海紫永机械有限公司| 瑞 机械有限公司| 锦机械设备有限公司| 常州聚武机械有限公司| 东平开元机械有限公司| 广州市中铭印刷机械有限公司| 济南工程机械有限公司| 泉州恒泉机械有限公司| 上海台新食品机械有限公司| 温州天马食品包装机械制造有限公司| 山东润通机械制造有限公司| 温州中环机械设备有限公司| 宁波美亚特精密机械有限公司| 江西中天机械有限公司| 鑫华机械制造有限公司| 海安机械制造有限公司| 宣城市建林机械有限公司| 东莞市和明机械有限公司| 瑞德森机械有限公司| 重庆培柴机械制造有限公司| 济南 机械 有限公司| 内蒙古机械有限公司| 泰州 机械有限公司| 绵阳新晨动力机械有限公司招聘| 哈克农业机械装备制造有限公司| 泰安市民乐机械制造有限公司| 杭州永创机械有限公司| 西安环宇机械制造有限公司| 北京起重设备有限公司| 南阳 机械 有限公司| 南京登峰起重设备制造有限公司| 杭州富朗机械有限公司| 广州华臻机械设备有限公司| 宁波瑞铭机械有限公司| 常州包装机械有限公司| 河北机械进出口有限公司| 江苏三麦食品机械有限公司| 苏州传动机械有限公司| 台林机械有限公司 -| 东莞市鸿企机械有限公司| 诸城市华钢机械有限公司| 上海杰伟机械制造有限公司 | 矿山机械设备有限公司| 安徽涌诚机械有限公司| 四川工程机械有限公司| 山东运泰机械有限公司| 青岛精锐机械制造有限公司| 河南 机械设备有限公司| 昆山市升达机械制造有限公司| 唐河大华机械有限公司| 莱州日进机械有限公司| 北京大森包装机械有限公司| 阳谷山立克工程机械有限公司| 上海国豪机械制造有限公司| 广东科杰机械自动化有限公司 | 山东康弘机械有限公司| 恒力泰机械有限公司| 菲美得机械有限公司| 温州利捷机械有限公司| 浙江工程机械有限公司| 常州制药机械有限公司| 新麦机械有限公司官网| 国浩机械制造有限公司| 山东英胜机械有限公司| 阳煤化工机械有限公司| 大连地拓重工有限公司怎么样| 三联传动机械有限公司| 常州福牛机械有限公司| 烟台华隆机械有限公司| 柳工常州机械有限公司| 上海山美重型矿山机械有限公司| 伯曼机械制造有限公司| 厦门华峰辊压机械有限公司| 禹城 机械 有限公司| 东莞市永创包装机械有限公司| 新疆昆玉钢铁有限公司| 杭州天恒机械有限公司| 禹城市华普机械设备有限公司 | 镇江宏泰钢铁有限公司| 海狮洗涤机械有限公司| 广州起航贸易有限公司| 山东大华机械有限公司| 广州磊蒙机械设备有限公司 | 宁波 钢铁有限公司| 北京机械施工有限公司| 湖北创联重工有限公司| 浙江中禾机械有限公司| 斗山工程机械苏州有限公司| 海的动力机械有限公司| 申光洗涤机械有限公司| 潍坊西泰机械有限公司| 玉环万全机械有限公司| 江阴市机械有限公司| 上海宝丰机械制造有限公司| 苏州海盛精密机械有限公司| 温州市鹿城江心服装机械有限公司| 台州机械制造有限公司| 杭州精工机械有限公司| 重庆海松机械有限公司| 上海立帆机械有限公司| 章丘市机械有限公司| 固耐重工苏州有限公司| 桂林正东机械制造有限公司| 天津 机械设备有限公司| 南京华创包装机械设备有限公司| 东莞达成机械设备制造有限公司| 佛山精密机械有限公司| 苏州杰威尔精密机械有限公司| 安徽泰恒机械制造有限公司| 济南冠越机械设备有限公司| 唐山 机械设备有限公司| 威海环宇化工机械有限公司| 威海祥光机械有限公司| 安徽康乐机械有限公司| 河南龙昌机械制造有限公司| 湖南汇杰机械设备有限公司| 南方力劲机械有限公司| 南通宝顺机械有限公司| 德州市启泰机械设备有限公司| 新乡市东源机械有限公司| 上海华威焊割机械有限公司| 浙江仁工机械有限公司| 骁马机械上海有限公司| 青州市远航机械设备有限公司| 无锡包装机械有限公司| 诸城晶品机械有限公司| 河南 机械有限公司| 南京寿旺机械设备有限公司| 青岛春风机械有限公司| 昆山富邦机械有限公司| 诸城市华钢机械有限公司| 上海丰泽机械有限公司| 郑州双狮粮油机械有限公司| 浙江安驰机械有限公司| 广州市汇格机械设备有限公司| 江苏仁达机械有限公司怎么样| 博凯机械上海有限公司| 重庆明天机械有限公司| 郑州双合机械有限公司| 南京一嘉起重机械制造有限公司 | 潍坊新成达机械有限公司 | 上海乾享机械设备有限公司| 杭州海特机械有限公司| 章丘丰源机械有限公司| 汕头机械厂有限公司| 中核华兴达丰工程机械有限公司| 宣化华泰矿冶机械有限公司| 宁波力源机械有限公司| 新美星包装机械有限公司| 昆山市烽禾升精密机械有限公司 | 上海木工机械有限公司| 苏福马机械有限公司| 鸿江机械制造有限公司| 自动化机械 上海有限公司| 马鞍山机械有限公司| 南京儒一航空机械装备有限公司 | 东莞市从创机械有限公司| 义乌机械设备有限公司| 广东恒联食品机械有限公司售后| 禹城市华普机械设备有限公司 | 广东新船重工有限公司| 瑞安市创博机械有限公司| 厦门工业机械有限公司| 常州东进机械有限公司| 湖南力诺机械有限公司| 朗维纺织机械有限公司| 山东泰瑞汽车机械电器有限公司| 汕头 机械有限公司| 佛山星光传动机械有限公司 | 江苏锐成机械有限公司| 合肥工程机械有限公司| 佛山市钲昌机械设备有限公司| 上海全驰机械有限公司| 常州市工程机械有限公司| 洛阳矿山机械有限公司| 山东锦鹏机械有限公司| 盐城联鑫钢铁有限公司| 南通明诺机械有限公司| 宁波钢铁有限公司工作| 太仓健柏机械有限公司| 江阴铸造机械有限公司| 财益机械工业有限公司| 杭州一鼎传动机械有限公司| 苏州同鑫鸿精密机械有限公司| 河南龙工机械制造有限公司| 合肥食品机械有限公司| 诸城市华邦机械有限公司| 唐山兴隆钢铁有限公司| 高峰机械工业有限公司| 滕州市美力机械有限公司| 东莞市瑞辉机械制造有限公司| 苏州百勤精密机械有限公司| 河南通达重工有限公司| 上海机械制造有限公司| 康纳机械制造有限公司| 东莞市泽冠机械有限公司| 扬州高标机械有限公司| 徐州迈特机械有限公司| 石家庄 机械 有限公司| 博凯机械上海有限公司| 洛阳瑞德机械有限公司| 湘潭 机械制造有限公司| 博可机械上海有限公司| 台州路桥机械有限公司| 武汉船用机械有限公司| 杭州力士机械有限公司| 温州朝隆纺织机械有限公司 | 杭州雅顿过滤机械有限公司 | 重庆海迅机械制造有限公司 | 青岛希世可机械有限公司| 宁波隆源精密机械有限公司 | 济南金迈达机械有限公司| 青岛包装机械有限公司| 杭州汽轮机械设备有限公司| 杭州汽轮机械设备有限公司| 聊城日发纺织机械有限公司| 深圳市德润机械有限公司| 徐州徐工随车起重机有限公司| 宁波中能连通机械有限公司| 邢台机械轧辊有限公司| 艾莎钢铁天津有限公司| 鑫磊机械制造有限公司| 宁波机械设备有限公司| 凯澄起重机械有限公司| 苏州金纬机械制造有限公司| 上海机械设备有限公司| 南京斯坦福机械有限公司| 河北天冠环保机械有限公司| 长葛市机械有限公司| 江阴西城钢铁有限公司| 山东矿山机械有限公司| 中材重型机械有限公司| 山西万泽锦达机械制造有限公司| 广东力特工程机械有限公司| 河南东起机械有限公司| 佛山市液压机械有限公司| 南通 机械 有限公司| 金华市机械有限公司| 寿光 机械有限公司| 南京工程机械有限公司| 东莞市全永机械制造有限公司| 上海徽机械有限公司| 佛山海之力机械有限公司| 广州市中铭印刷机械有限公司| 南牧机械有限公司招聘| 柳州市机械有限公司| 郑州志乾机械设备有限公司| 上海 精密机械有限公司| 重庆机械有限公司招聘| 沈阳维用精密机械有限公司招聘| 福州协展机械有限公司| 苏州鼎木机械设备有限公司| 成都兴业邦达重工机械有限公司| 东莞共荣精密机械有限公司 | 江苏别具匠心机械设备有限公司 | 山东战尔机械有限公司| 湖州核汇机械有限公司| 郑州天龙机械有限公司| 三马起重机有限公司| 盐城市成功机械制造有限公司| 盐城海德机械制造有限公司| 广东思沃精密机械有限公司| 辽宁机械制造有限公司| 浙江冠林机械有限公司| 上海轶鹰起重机械有限公司| 黑龙江机械有限公司| 沈阳机械设备有限公司| 苏州拓博机械有限公司| 上海牛力机械有限公司| 南通振康机械有限公司| 河北雪龙机械制造有限公司| 上海机械制造有限公司| 河北政博机械制造有限公司| 长沙聚邦机械设备有限公司| 汇大机械制造有限公司| 华信陶瓷机械有限公司| 东风井关农业机械有限公司| 北京包装机械有限公司| 东莞科雄机械有限公司| 苏州威邦自动化机械有限公司| 广州甲宝机械有限公司| 东莞市源机械有限公司| 北京市机械施工有限公司| 洛阳机械设备有限公司| 青州矿砂机械有限公司| 山东贝特起重机有限公司| 群峰机械制造有限公司| 威士重工机械有限公司| 徐工重型机械有限公司| 广州市台展机械有限公司| 机械化工程有限公司| 西安环宇机械制造有限公司| 常州万高机械制造有限公司| 山西机械制造有限公司| 深圳市高士达精密机械有限公司| 合肥精密机械有限公司| 广东新船重工有限公司| 河南鼎科机械有限公司| 临工工程机械有限公司| 无锡市丰玮机械设备有限公司| 东莞市鑫国丰机械有限公司| 河北荣信钢铁有限公司| 浙江富龙钢铁有限公司| 青岛中鸿重型机械有限公司| 保定金地机械有限公司| 江苏纺织机械有限公司| 江西柳工机械设备有限公司| 合肥润通工程机械有限公司| 杭州冠浩机械设备有限公司 | 东莞鸿昌机械有限公司| 滕州三合机械有限公司| 漳州市机械有限公司| 无锡盛达机械制造有限公司| 烟台金土源机械化工程有限公司| 唐山国义特种钢铁有限公司| 安宁永昌钢铁有限公司| 威海盛世机械有限公司| 无锡精派机械有限公司| 浙江云广机械制造有限公司| 苏州 工业机械有限公司| 江苏苏东化工机械有限公司| 天宇机械制造有限公司| 青岛天乐机械有限公司| 广州宏兴食品机械有限公司| 曲阜艾特机械有限公司| 志庆机械设备有限公司| 山东泰安煤矿机械有限公司| 浙江诚泰化工机械有限公司| 郑州郑瑞机械有限公司| 锋劲威机械有限公司| 潍坊华耀磁电机械有限公司| 源通机械设备有限公司| 永 机械 有限公司| 德州力维机械有限公司| 烟台飞达机械有限公司| 浙江先锋机械有限公司| 诸城市放心食品机械有限公司| 三友重工机械有限公司| 曲阜兴运输送机械设备有限公司| 宁波久力数控机械有限公司| 昆山铁生机械有限公司| 江苏中饮机械有限公司| 无锡三麦机械有限公司| 常州市昊博机械有限公司| 重工机械制造有限公司| 龙工江西机械有限公司| 长沙宏银机械有限公司| 浙江小伦制药机械有限公司| 银丰弹簧机械设备制造有限公司| 苏州苏媛爱德克机械有限公司|