2010-04-21 69 views
2

只是想驗證數據庫分區只有在數據庫級實現,當我們查詢一個分區表,我們還是做我們的正常查詢,沒有什麼特別的與我們的查詢,被自動解析查詢時進行優化,那是對的嗎?MySQL分區

例如我們有一個名爲「地址」的表,其中有一個名爲「country_code」和「city」的列。所以,如果我想在紐約,美國所有的地址,一般我咬咬牙做這樣的事情:

select * from address where country_code = 'US' and city = 'New York' 

如果現在的表是通過「COUNTRY_CODE」分區,我知道,現在的查詢只將在包含country_code = US的分區上執行。我的問題是我是否需要顯式指定要在我的sql語句中查詢的分區?或者我仍然使用前面的語句,數據庫服務器會自動優化它?

提前致謝!

回答

1

分區對於您編寫的任何查詢都是透明的。沒有必要指定要查詢的分區。

數據庫只是使用分區下,以優化和相應減少的理想,需要通過基於搜索你的where子句中的數據或索引的數量。

4

賈羅德的答案是正確的,充分回答這個問題,但我覺得有缺失的重要棋子。

如果您的查詢不包括在分區列過濾條件,你可能會看到比你會在同樣大小的未分區表的性能差。

如果你改變了你的查詢,只是在城市進行篩選,它不會使用,只有美國分區,將不是反對一樣又未分區表的查詢表現較差。

唯一的其他地方分區可以幫助查詢與同一分區鍵加入到一個分區表的時候。通常這種連接可以很容易並行化。假設這不是你在做什麼。