我在MySQL数据库中有两个设计不佳的表。这些表包含很长的字符串。
在table1
中,字段unqiue_string_1
是unqiue:
table1
unique_string_1 | long_string_1 | long_string | ..
在table2
中,字段unqiue_string_1
不是唯一的。
table2
unique_string_1 | .. | more strings..
------------------------------------------
sample_string_1 | .. | more strings..
sample_string_1 | .. | more strings..
sample_string_1 | .. | more strings..
sample_string_3 | .. | more strings..
sample_string_3 | .. | more strings..
sample_string_3 | .. | more strings..
sample_string_4 | .. | more strings..
sample_string_4 | .. | more strings..
现在,当我尝试检索大型数据集时,我的phpMyAdmin连接超时。我想通过索引事物和建立外键关系来使查询更快一些。
首先我这样做了:
CREATE UNIQUE INDEX my_id ON table1(unqiue_string_1)
现在我想要一个SQL语句来创建外键。我试过这个:
ALTER TABLE table2
ADD FOREIGN KEY (`my_id`)
REFERENCES table(`my_id`);
我认为我缺少某种约束,因此sample_string_1
的{{1}}中的外键等于table2
中的索引。我错过了什么?
答案 0 :(得分:0)
我认为你想要的语法是:
ALTER TABLE table2
ADD FOREIGN KEY (`unique_string_1`) REFERENCES table1(`unique_string_1`);
引用是列名,而不是索引。
答案 1 :(得分:0)
REFERENCES表中的小错误:表应该是表名:
ALTER TABLE table2
ADD FOREIGN KEY (`unique_string_1`) REFERENCES table1(`unique_string_1`);