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。