我有一个查找表,它是 id-value 对的主表。此表用于存储静态数据,例如:所有国家/地区、货币等。
所以其他表有一个currency_id, country_id。
我有一个复杂的 sql,它返回一堆这样的 id。要获得实际值,有 2 个选项:
1. 使用与查找表的连接
2. 在项目中,之前的开发者实现了一个功能,他有一个国家的枚举类,一个货币的枚举类等。
所以他只是从 sql 结果集中获取 id,并使用 enum 类查找值。他的意见是这样更快。
我当然可以通过放置更快的开始和结束时间来确定,sql join 或 enum 查找。
但是如果不这样做,是否有可能预测哪个会更快?
最佳答案
两个原因:
笔记:
您不应该在“One True Lookup table”(OTLT)反模式中使用一个查找表。您只在一张表中存储一个实体。
(2011 年 12 月添加):
在 DBA.SE 上,不支持枚举或 OTLT:
关于查找表的sql性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373910/