Mysql 关系中的字段类型逻辑

Mysql 关系中的字段类型逻辑,mysql,database,relational-database,foreign-key-relationship,Mysql,Database,Relational Database,Foreign Key Relationship,我有一些用户偏好表,如货币,语言和 货币结构和样本记录: id | title | slug ----+------------+-------- 1 | US Dollar | usd 2 | CA Dollar | cad 3 | Euro | eur 4 | Swiss Franc| chf id | title | code | flag ----+-------------+-----------+------

我有一些用户偏好表,如
货币
语言

货币
结构和样本记录:

id  |   title    |  slug
----+------------+--------
1   | US Dollar  | usd
2   | CA Dollar  | cad
3   | Euro       | eur
4   | Swiss Franc| chf
id  |   title     |    code   |   flag
----+-------------+-----------+----------
1   | English     | en        | img/flags/en.png
2   | French      | fr        | img/flags/fr.png
语言
结构和样本记录:

id  |   title    |  slug
----+------------+--------
1   | US Dollar  | usd
2   | CA Dollar  | cad
3   | Euro       | eur
4   | Swiss Franc| chf
id  |   title     |    code   |   flag
----+-------------+-----------+----------
1   | English     | en        | img/flags/en.png
2   | French      | fr        | img/flags/fr.png

我想在这些表和
用户
表之间创建一个关系,我想知道哪个字段更适合外键?例如,在
currency
currency.id
currency.slug

中,如果您看到sql的速度比您应该使用currency.id的速度快,因为从很多行(以千为单位)中查找整型值会更快,然后查找varchar

但是在这里你可以看到,货币不会超过500,所以你可以同时使用这两种货币,这不会影响你的速度

在此特定示例中,您可以同时使用这两种方法:
currency.id或currency.slug如果您看到sql的速度比您应该使用currency.id的速度快,因为从如此多的行中查找整型比查找varchar更快

但是在这里你可以看到,货币不会超过500,所以你可以同时使用这两种货币,这不会影响你的速度

在此特定示例中,您可以同时使用这两种方法:
currency.id或currency.slug

我建议您使用currency.id建立关系。对于大量数据,应使用主键建立关系。

我建议您使用currency.id建立关系。对于大量数据,应使用主键建立关系。

感谢您的建议,您对大小的看法如何?因为我应该在
users
表中为每个用户存储
usd
,而不是
1
整数将始终为4字节integer将始终为4字节,但varchar是动态的,因此它将计算每个字符的slug 1字节*这里slug看起来很小**3个字符,因此您可以使用currency.slug作为示例。感谢您的支持建议,你对尺码有什么看法?因为我应该在
users
表中为每个用户存储
usd
,而不是
1
整数将始终为4字节integer将始终为4字节,但varchar是动态的,因此它将根据您的slug计算每个字符1字节*此处slug看起来很小**3个字符,因此您可以在本例中使用currency.slug。