当一张表小得多时,以编程方式连接表或使用 SQL Join 语句会更快吗?
更具体地说,如何从hashmap<int, string>
较小的表中获取字符串并将其值设置为从较大表返回的对象与预先连接数据库中的表相比如何?两张桌子的相对大小有区别吗?
更新:改写我的问题。是否抓取较大表的子集(我关心的 5,000 - 20,000 条记录)然后以编程方式加入较小的表(我将在本地缓存)执行 SQL 连接?SQL 连接适用于整个表还是仅适用于将返回的较大表的子集?
SQL 连接语句:
SELECT id, description
FROM values v, descriptions d
WHERE v.descID=d.descID
AND v.something = thingICareAbout;
个人陈述:
SELECT id, descID
FROM values
WHERE v.something = thingICareAbout;
SELECT descID, description
FROM descriptions d;
程序化加入:
for (value : values){
value.setDescription(descriptions.get(value.getDescID))
}
附加信息:大表中共有 800,000,000 条记录,对应于小表中的 3,000 个值。大多数搜索返回 5,000 - 20,000 个结果。这是一个甲骨文数据库。