店外键或VARCHAR值
我已经通过我的网站的多个表:店外键或VARCHAR值
它是最好的存储从查找表或varchar
本身外键。
的我的网站的表有两个是
job_profile
id
title
salary_range_seeking
cv_link
datetime_created
job_type
job_type
id
type
job type
- type
值Full Time
,Part Time
因此,例如,是它最好的ID从job_type
存储在列job_type
和保持参照完整性或在前端使用时,用户选择该值,文本值存储在job_type
列中。我正在寻找最佳性能选项和建议的做法。
使用外键代替文本值存储在字段中可以获得更好的性能,因为它会减少使用的内存量。
当字段的值(此例中为job_type)将以高速率重复时,这是推荐的做法。
读取或写入的性能?或运行报告?您如何存储数据取决于您打算如何处理数据,以及您打算如何执行数据。
现在,人们普遍接受的是存储id,而不是varchar,这有几个原因,但主要的原因是它是普遍接受的方式。这将为您的工作提供支持,帮助其他人更容易,也可能为您提供帮助。使用您提供的基本布局,无论您使用何种数据,都应该对性能几乎没有影响。
如果job_profile
表的主要用途是运行报表,则可以通过存储varchar而不需要进行连接来获得更好的性能。这种类型的反规范化通常会在数据仓库类型的应用程序中看到,在这种类型的应用程序中,您可以使用更多的内存和存储来更快地检索和显示数据。
如果该字段是可选的,最好存储varchar,即如果不是每个作业都有一个类型。或者是最好有一个外键约束并允许null。 – 2012-08-07 21:55:30
我会有一个FK约束,并允许null。请记住,如果允许空值,那么您希望左连接到'job_type'表,因为内连接只会返回非空值的结果。 – invertedSpear 2012-08-07 22:05:50
如果值并不总是需要的,我需要在字段上允许为null,因为我已阅读这不是最佳做法 – 2012-08-07 21:52:43
如果我需要进行连接,我会获得更好的性能吗? – 2012-08-07 21:56:23
你在哪里阅读允许为空不是最佳做法? – invertedSpear 2012-08-07 22:08:42