0
我有一個分區和子查詢(mysql 5.1)的問題。恰恰當我執行select select時,mysql會跳過分區。我不明白爲什麼。沒錯,我有一個分區表是這樣的:分區和子查詢
CREATE TABLE parted_table (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20)
) PARTITION BY KEY() PARTITIONS 20;
查詢看起來像:
select * from parted_table where id in (select col_fk from other_table);
而且explain partitions
表明,上述選擇使用所有20個分區,即使該子查詢只返回一個值。在查詢的最優化過程中,mysql是否不知道子查詢的結果集?
我該怎麼做才能在給定的例子中進行分區?
編輯:我發現了一個bug正是考慮這個問題(http://bugs.mysql.com/bug.php?id=22765)。它在2008年得到了修復,但它在mysql 6.0中被修復了:(我讀了很多附魔從mysql 6.0移到了mysql 5.5,此刻我試圖確認這個特定的修復包含在ver.5.5中。
不幸的是,幾乎沒有將只是一個一行,在給定的例子'parted_table'有1M行,'other_table'(也是分區的)有20M行,我決定把查詢分成兩個獨立的選擇,最後,這兩個選擇仍然會很快(或者足夠快)。 – emstol 2011-04-04 06:49:49