sql性能的查找表

时间:2011-03-21 04:47:09

标签: sql join enums

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

所以其他表格有currency_id,country_id。

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

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

1 个答案:

答案 0 :(得分:5)

有两个原因:

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

注意:

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

(2011年12月添加):

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

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