在MySQL中创建字符串约束的外键

时间:2015-04-04 17:28:55

标签: mysql database

我在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中的索引。我错过了什么?

2 个答案:

答案 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`);