使用sql按索引选择大量行

wpx232ag  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(260)

我正在尝试通过名为id的列的值来选择多个行。我知道您可以通过以下方法轻松地完成此操作:

SELECT col1, col2, col3 FROM mytable WHERE id IN (1,2,3,4,5...)

然而,如果有几百万个ID我想选择,而这些ID并不总是有模式(这意味着我不能使用像x和y之间的东西)?这个select语句仍然有效吗?或者有更好的方法吗?
实际应用是这样的。过滤器由用户指定,与记录的某些属性进行比较。从这些过滤器中,我们创建一个特定用户感兴趣的数据子集。大约有3000万条记录,每个记录有大约3000个属性(存储在大约30个表中,但每个表都有id作为主键),因此每当有人查询他们想要的记录子集时,我们就必须连接许多表,应用这些过滤器,并找出他的子集是什么样子。为了避免一直连接许多表,我想最好只连接一次表,找出所选子集的id,这样每次进行新查询时,我们所要做的就是选择与筛选id匹配的行的相关列。

jgwigjjp

jgwigjjp1#

这取决于您使用的数据库和接口。对于几百或几千个值,没问题。但你的问题是数百万。这可能会开始限制查询的长度——由数据库、您使用的工具或中间库指定。
如果您有这么多的id,我强烈建议您将它们加载到数据库的表中 id 作为主键。然后使用 join 或者 exists 标识表中匹配的行。
通常,这样的列表无论如何都会在数据库中生成。在这种情况下,您可以使用子查询或cte,只需在最终查询中包含该代码。

相关问题