Я пытаюсь объединить две таблицы на двух разных движках. Один на Innodb, а другой на Tokudb.
Запрос выглядит примерно так:
select * from table1 t1, table2 t2 where t1.a = t2.x and t1.b = 'xyz';
Здесь table1 имеет столбцы (проиндексированные), b (проиндексированные), c и имеет механизм innodb
, в то время как table2 имеет столбцы x (indexed), y, z и имеет механизм tokudb
Он просматривает все строки таблицы2 и используя тип соединения: ALL
Результат объяснения запроса
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 NULL const b,a b 303 const 1 100.00 NULL
1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 20687 100.00 Using where
Как вы можете видеть, он сканирует всю таблицу2. Я что-то здесь упускаю? или это потому, что он объединяет два разных движка?
Создать синтаксис таблицы
table1
CREATE TABLE `table1` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT
`a` varchar(255) DEFAULT NULL,
`b` varchar(255) DEFAULT NULL,
`c` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `a` (`a`),
UNIQUE KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
table2
CREATE TABLE `table2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`x` varchar(100) DEFAULT NULL,
`y` varchar(100) DEFAULT NULL,
`z` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `x` (`x`)
) ENGINE=TokuDB DEFAULT CHARSET=latin1;