我有一个oracle数据库,我有只读访问权限(没有创建临时表的权限)。我有一个28000个ID的选择列表(在Excel中),对应于一个包含数百万条记录的表中的28000行。如何编写查询以返回28000行?
我尝试在访问中创建一个表并通过ODBC执行连接,但Access冻结/花费了不可思议的长时间。我是否必须在IN语句中创建包含28,000个项目的查询?
PL / SQL中有什么东西可以让它变得更容易吗?
感谢您的时间和帮助。
-jc
答案 0 :(得分:3)
是什么让你的28,000行变得特别?
您可以使用记录中的另一个字段来限制您在WHERE子句中的查询(或者至少缩小数百万行的数量)?也许您感兴趣的ID在一定范围内?
答案 1 :(得分:0)
在Oracle 10g中,IN(..,.. ,,)类型查询的最大变量数为1000。
答案 2 :(得分:0)
尝试在您在Access中创建的表上创建索引。
答案 3 :(得分:0)
这是一个痛苦的条件。一个解决方法是创建一个包含所有ID的视图,然后加入它。
以下示例是Oracle。
WITH
ids AS
(
SELECT 314 ID FROM DUAL UNION ALL
SELECT 159 ID FROM DUAL UNION ALL
SELECT 265 ID FROM DUAL
)
SELECT VALUE1, VALUE2
FROM SOME_TABLE, ids
WHERE SOME_TABLE.ID = ids.ID
这基本上嵌入了with子句中的所有28000个ID,允许您在不实际创建表的情况下进行连接。
丑陋,但它应该有用。
答案 4 :(得分:0)