ビューとテーブルを結合したいのですが、あるテーブル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...';