2011-11-28 120 views
-1

我已經有一列iscurrent一個表,值是0和1MERGE語句性能

我行插入該表與被插入或更新的基礎上,iscurrent值MERGE語句。爲了性能調優,我在該表上創建了兩個分區,分別爲0和1。但表現還不夠好。

如何調整合並語句?每次它將成千上萬行合併到數百萬行。將分區表幫助嗎?

+4

你可以發表聲明嗎? 「MERGE」聲明中沒有固有的「緩慢」。這幾乎是一個內置的upsert。 – Matthew

+0

所以基本上你會觸摸表中的每一行?無論是更新還是插入?你會很難從中獲得表現。 你能提供一個你的合併聲明的例子嗎? –

+1

沒有足夠的信息來幫助這裏。您需要提供表結構,索引和正在運行的查詢以便開始。 – JNK

回答

0

如果您使用派生表作爲源,請首先調整該select語句,或者將派生表的結果放入具有適當索引的物理表中。

MERGE myTargetTabe as TargetTable 
USING (derived table statement goes here) SourceTable on ....... 

MERGE語句將掃描每個符合你的「ON」子句中指定的標準,如果有你沒有需要合併行的行,然後在這裏排除行。例如:

MERGE myTargetTabe as TargetTable 
USING (derived table statement goes here) SourceTable on TargetTable.ID = SourceTable.ID and TargetTable.OtherColumn NOT IN (....) and ...... or .... and so on.