0

在采访中被问到:我有 2 张表,一张表有类似的记录ID, Name, addressid(pk)是从 1 到 10000000。

另一个表有从 10000001 到 20000000 的记录。

我必须检查表 1 或表 2 中是否存在特定 ID 并返回相应的结果。

因为表大小很大,所以必须想一个优化的方法来做到这一点。

4

2 回答 2

0
declare @ID BIGINT
SET @ID=10000000
IF EXIST(SELECT ID FROM TABLE1 WHERE ID=@ID)
    SELECT ID,NAME,ADDRESS FROM TABLE1 WHERE ID=@ID 
ELSE IF EXIST(SELECT ID FROM TABLE2 WHERE ID=@ID)
    SELECT ID,NAME,ADDRESS FROM TABLE2 WHERE ID=@ID 
ELSE
    SELECT @ID
于 2020-10-07T17:20:19.593 回答
0

我的想法很少。

  • 在 hive 中,您可以使用 map-side join,当 1 个表较大而另一个表较小时,它比通常的 join 快得多。(这里第二个表是您要搜索的 id)
  • 您可以优化存储数据的方式。如果此类查询频繁,则保持数据按 id 列排序。诸如 orc 之类的列格式会跟踪每个文件中的 id 范围,从而使此类查询更快。
于 2020-10-07T18:08:43.743 回答