我想加入一个带有视图的表,其中一个表L
是本地的,而视图F
是FEDERATED
驻留在另一台服务器上的视图:
SELECT * FROM L LEFT JOIN F ON L.id = F.id;
现在,尽管表和视图之间实际上有很多匹配项,但 JOIN 不会导致任何命中。ID 字段是bigint
。
沮丧,我创建了一个TEMPORARY
表T
并将所有内容转储F
到其中,从而制作了F
. 使用T
代替F
, JOIN 按预期工作。但是创建过程T
会消耗内存和时间。
这种奇怪的 MySQL 行为可能是什么原因?
表定义:
CREATE TABLE `L` (
`id` bigint(20) NOT NULL,
`id2` bigint(20) NOT NULL,
PRIMARY KEY (`id`,`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
和(这个表实际上是远程服务器上的一个视图):
CREATE TABLE `F` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`field1` bigint(20) NOT NULL,
...
`field5` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://userName:pword...';