我使用一个相当不受欢迎的数据库 - 每天的性能各不相同,所以我想尽可能快地输出。我希望找出将值附加到输出的最有效方法。对于大多数套件,我必须输出相当宽的最终尺寸(超过20-60列,60-500k行),因此也必须考虑加工。基准测试对此有点棘手,因为它似乎随服务器负载而变化。
所以,加入一个大桌子,加上一个长期的CASE论证 - 两者似乎都很笨拙,但是最好的行动方案是什么?
示例:
- 实体表输出将产生250k行,50列 - 实体类型表有1k行,2列(键和描述)
select e.*, et.description
from Entities e
inner join entity_types et ON e.entity_type_key = et.entity_type_key;
〜或〜
select e.*
case
when e.entity_type_key = 1 then 'Description 1 from entity_types'
when e.entity_type_key = 2 then 'Description 2 from entity_types'
(repeat about 1k times)..
from Entities e
答案 0 :(得分:0)
在这种特殊情况下,你不会看到很大的不同。表将被缓存(可能)并且查找将非常快(我们可以假设表非常小)。 Case语句需要稍微多一点时间进行解析(一些纳秒,我不知道)和稍微多一点的网络流量,但是......再一次,我认为你根本不应该考虑它。
您甚至可以将其映射到应用程序层。或者只是使用join,因为它更具可配置性和可读性。