sql性能的查找表

Vic*_*tor 4 sql enums join

我有一个查找表,它是id-value对的主表.此表用于存储静态数据,如:所有国家/地区,货币等.

所以其他表有currency_id,country_id.

我有一个复杂的SQL返回一堆这样的ID.要获得实际值,有两个选项:
1.使用与查找表的连接
2.在项目中,前一个开发人员实现了一个功能,即他有一个国家的枚举类,一个货币的枚举类等.
所以他只是从sql结果集中获取id,并使用enum类查找该值.他认为这是更快的.

我当然可以通过设置更快,sql join或enum lookup的开始和结束时间来确定.
但是,如果不这样做,是否有可能预测哪一个会更快?

gbn*_*gbn 5

两个原因:

  • 您有一个查找表来删除数据修改异常.也就是说,只有在查找数据发生更改时,才能在一个位置更改数据.现在你必须编译和发布
  • RDBMS旨在加入.Enum 仍然是客户端代码中的JOIN

注意:

您不应该在"One True Lookup table"(OTLT)反模式中有一个查找表.您只在表中存储一个实体.

(2011年12月添加):

  • 如何确保在右表中具有正确的查找值?
  • 您将在某个时刻拥有多个数据库客户端,不要使用枚举对数据进行模糊处理

在DBA.SE上,不支持Enums或OTLT: