私たちはMySQLの内部結合にいくつかの問題を抱えています。基本的に、 '='演算子を使用すると奇妙なエラーが発生しますが、代わりに 'like'を使用すると動作します。残念ながら、これはActiveRecordによるものであり、代わりに代わりに「好き」を単に叩く簡単な方法はなく、ここで実際に何が起こっているのか理解したい。ここでMySQL INNER JOIN - '=' vs 'like'
は失敗したクエリです:ここでは
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id = `site_versions`.version_id;
は誤りである:ここでは
ERROR 1296 (HY000): Got error 20008 'Query aborted due to out of query memory'
from NDBCLUSTER
作品クエリです:ここでは
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id like `site_versions`.version_id;
は、上のいくつかの詳細は、テーブル自体:
mysql> desc site_versions;
+----------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| version_id | int(11) | YES | MUL | NULL | |
[..snip..]
+----------------------+----------+------+-----+---------+----------------+
mysql> desc versions;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
[..snip..]
+------------+--------------+------+-----+---------+----------------+
'like'が動作し、 '='が動作しない理由はありますか?
実際にあなたが期待している結果を実際に与えているようですか?おそらく何かに参加できないことがあるかもしれません(intの意味は何ですか?)ので、有効なクエリがトリガしているメモリの問題を回避してください。 –
@andrewcooke - うーん、 'like'はそのように使われたときにうまくいくように見える:http://sqlfiddle.com/#!2/86792/1 –
これは、各クエリの' explain'を表示するのに役立つかもしれない。 –