我有一個表按id進行分區,並通過對代碼進行散列(都是整數)。 30個分區,每個分區散列4個,共120個子分區。MySQL忽略查詢中的子分區
如果我做了選擇上的ID獨自一人,解釋計劃表明,它的正確修剪下來只有分區&與之相關的子分區(4)
如果我做了選擇上的ID +代碼,解釋計劃顯示,它的正確修剪下來到與之相關的一個特定子分區(1)
無論其...
如果我做了選擇上的代碼獨自一人,解釋計劃似乎表明MySQL是做了充分的表掃描(120個分區),而不是像甲骨文一樣行動,只掃描每個分區的一個子分區相關的分區(總共30個)。
當我不能刪除整個分區時,我是否必須做一些特殊的事情才能讓MySQL利用子分區修剪?還是MySQL(至少5.1)只是不支持自己利用子分區?
您使用的是什麼引擎類型? – Johan 2011-05-05 18:48:41
我使用InnoDB – Bitbang3r 2011-05-06 00:13:38
非常有趣。我很困惑,因爲innoDB不會做散列鍵,但我想你的意思是存儲在B +樹中的計算散列。 – Johan 2011-05-06 04:27:41