2013-11-20 66 views
4

我們目前有一個SQL聯合數據庫分割成10個分片,數據的大致相等部分由客戶端ID進行過濾。SQL Azure聯合和索引 - 對性能的說明

目前我們遇到執行過濾查詢的性能問題,例如,運行特定客戶端的查詢可能需要3分鐘時間才能在某些分片中返回4000行。但是,在同一分片上的未過濾連接中運行完全相同的查詢會在4秒內返回。一個顯而易見的方面是經歷減速的碎片傾向於包含更多的客戶,儘管數據較少。最有可能的性能抑制器(我相信)將會是索引,並與Filtered/Unfiltered連接有關。

四處搜索我還沒有發現關於分片/特定索引策略在分片上查詢性能的很多信息(除了Azure顯然不支持索引視圖)。我的印象(因此需要澄清)是索引應用於分片的所有成員,而不是以成員爲基礎的成員。

如果前者那麼我們有點醃製,除了重新劃分這個特殊的碎片,這是沒有意義的,考慮到唯一的區別是客戶端的數量,而不是數據的大小。我們要嘗試的一些事情是明確地將過濾器添加到索引中,甚至將過濾器添加到每個查詢中。可以肯定地說,我們並不樂意離開Filtered連接。

有沒有其他人經歷過這個問題,或者可能提供一些方向,未經過濾的連接明顯優於已過濾的連接?

在此先感謝...

+0

有興趣知道,你發現什麼,我猜我可能會碰到同一個問題,現在所有的工作很好,我只有幾個客戶在一個碎片:) – pateketu

+0

你能否提供示例查詢?你在使用** SELECT * FROM TableName **嗎? –

+0

請參閱我的過去的答案:http://stackoverflow.com/questions/17998196/computed-columns-sometimes-missing-from-select/20835737#20835737 –

回答

0

聯合中的索引應用於聯合會成員的基礎上。如果您從一個索引成員開始並執行SPLIT操作,那麼索引將自動應用於SPLIT的產品。但是,如果在創建多個成員之後應用索引,則需要向每個成員顯式添加索引。

所以希望你不是在泡菜。

由於該功能不受4月份宣佈的新SKU支持,您可能需要考慮向前移動的聯合會的替代方案。