gpt4 book ai didi

查找表的sql性能

转载 作者:行者123 更新时间:2023-11-30 23:52:06 25 4
gpt4 key购买 nike

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

所以其他表有一个currency_id, country_id。

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

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

最佳答案

两个原因:

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

  • 笔记:

    您不应该在“One True Lookup table”(OTLT)反模式中使用一个查找表。您只在一张表中存储一个实体。
  • Common Lookup Tables
  • OTLT and EAV: the two big design mistakes all beginners make
  • Google search

  • (2011 年 12 月添加):
  • 如何确保在正确的表中有正确的查找值?
  • 有时您将拥有多个数据库客户端,请勿使用枚举混淆数据

  • 在 DBA.SE 上,不支持枚举或 OTLT:
  • https://dba.stackexchange.com/q/6962/630
  • https://dba.stackexchange.com/q/6987/630
  • 关于查找表的sql性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373910/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com