私は2つのテーブルを持っています:
CREATE TABLE IF NOT EXISTS treaties(
id INT NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB;
と
CREATE TABLE IF NOT EXISTS items(
id INT NOT NULL AUTO_INCREMENT,
treaty INT NOT NULL,
item varchar(20),
PRIMARY KEY(id),
FOREIGN KEY (treaty) REFERENCES treaties(id)
ON UPDATE RESTRICT
ON DELETE RESTRICT
)ENGINE=InnoDB;
その後、各テーブルに数行を挿入しましたが、値treaties.id
はitems.treaty
同じでした。私が走るとき
EXPLAIN SELECT *
FROM `items`
JOIN `treaties` ON `items`.`treaty` = `treaties`.`id`
WHERE 1
私が得ました:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | treaties| ALL | PRIMARY | NULL| NULL | NULL| 3 |
1 | SIMPLE | items | ALL | treaty | NULL| NULL | NULL| 4 | Using where; Using join buffer
私は、間に外部キーがitems.treaty
あり、treaties.id
このキーを使用する必要があり、タイプがすべてであってはならないと考えました。なにが問題ですか?
私を助けてください!
ありがとうございました!