У меня проблема с разбиением на разделы и подзапросами (mysql 5.1). Точно, когда я выполняю select с помощью subselect, 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 не знает результирующий набор подвыбора во время оптимизации запроса?
Что я должен сделать, чтобы получить разбиение в данном примере?
Редактировать: Я обнаружил ошибку, учитывая именно эту проблему (http://bugs.mysql.com/bug.php?id=22765). Это было исправлено в 2008 году, но это было исправлено в MySQL 6.0 :( Я читал, что было перенесено множество чар с mysql 6.0 до mysql 5.5. В данный момент я пытаюсь подтвердить, что это конкретное исправление было включено в версию 5.5.