【问题标题】:How to conduct large-scale lookups in SQL?如何在 SQL 中进行大规模查找?
【发布时间】:2020-12-31 12:07:59
【问题描述】:

我有一个包含几百万行的 SQL 表,每行包含 ID1 和 ID2 列。

我正在尝试在此表中查找 ID1 和 ID2 的 100,000 个唯一组合的条目,并将此查询的结果导出到 CSV 文件。

在过去,对于较少数量的行,我可以使用如下方式的查询

SELECT * 
FROM Database.Table 
WHERE ID1 = 5 AND ID2 = 3 
   OR ID1 = 9 AND ID2 = 33 
   OR ID1 = 59 AND ID2 = 332...

但是,一旦我超过了 ID1 和 ID2 的几千个组合,这似乎就坏了。

在 SQL 中处理此类大型查找的最佳方法是什么?

【问题讨论】:

  • 您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称,性能调整完全取决于供应商。请为您正在使用的数据库产品添加tagWhy should I tag my DBMS

标签: sql lookup lookup-tables


【解决方案1】:

将 CSV 文件加载到包含两列的表中:id1id2。将这些设为主键。

然后使用joinexists

select bt.*
from bigtable bt join
     csvtable csv
     on bt.id1 = csv.id1 and bt.id2 = csv.id2;

【讨论】:

    【解决方案2】:

    你试过 IN 语句吗? https://www.mysqltutorial.org/sql-in.aspx/

    SELECT * FROM table WHERE (ID1, ID2) in ( (5, 3), (10, 6), ..)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 2017-05-16
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多