500分,求在千万条记录的数据库中进行批量查询的高效方法?

来源:百度知道 编辑:UC知道 时间:2024/05/04 08:07:44
最佳答案加至500分求教:

asp一次性从ACCESS数据库的百万条数据中(表中形式如下)
字段A 字段B
11111 记录一
22222 记录二
33333 记录三
44444 记录四
55555 记录五
66666 记录六
...
批量查询到大于或等于下面数据的记录:
23456
13567
67543
...
例如:数“23456”,对应于数据库中的记录应是“大于22222”的,那么得到记录“记录一”,余类推。
然后按数组A原有记录的顺序排序记录的方法。

例如查询数组 23456,13567,67543,...
得到记录结果 记录二,记录一,记录六...

不想用循环读取数据库表where得到记录的办法,那样效率太低,每循环一次要近秒钟,服务器都崩溃了。
应该如何处理?求高效方法答案。
有正确答案再加分。言出必行。
“数组A”指“23456,13567,67543,... ”

回应补充:
一、所以说千万条记录,是因为记录在不断增多,而且方法将会对SQL数据库的数据查询同样有帮助。
二、数据库字段已设索引。
三、也不是遍历的问题,因为查询的并不是匹配一个数的数据,而是匹配一组数的数据。
五、可以把这个看作一个嵌套循环的问题:在普通数据库A中查询到一组数据后,再同时在超大的数据库B中查询相匹配数据。

10000 20000 文字一
21000 30000 文字二
31000 40000 文字三
41000 50000 文字四
51000 60000 文字五
61000 70000 文字六
查询到大于或等于下面这个数组的单个数的记录啊:
23456,13567,67543...

使用 ORACLE 吧 他比ACCESS要快很多
在ORACLE里面 这样的情况可以对表做分区 再加上游标、索引、存储过程
效率应该会让你满意的

1、据本人的经验,ACCESS对百万条数据的处理应该是力不从心,如真的有一百万条以上的记录,循环一次不是一秒能解决的,至少是几秒以上。
2、如果你的数据有特别的规律,你可以自个想特别的算法,如你给出的那几行数据就是有特别的规律的,不过,你的数据真的如此有规律吗?如果有,不是很难的事,如果没有,ACCESS自身拥有的查询算法一般来说比你写的算法效率要高许多(请使用索引,有索引的情况下查询速度会快很多)。

令表1为A(a,b)同,表2为B(a,b)
试试这个查询:
select C.a, A2.b
from A A2,
(
select B1.a, max(A1.a) as c
from B B1,A A1
where B1.a >= A1.a
group by B1.a
) C
where A2.a = C.c
如果B表的记录也很多的话,这个查询很恐怖的。
另外我不知道access支持这个嵌套查询不。

  1. SQL 关键索引,在大表上创建索引 

  2. 千万记录的表不算大,只要索引创建对了,性能可以正常提升,

  3. 还有一种就是比较偏的方式:先把需要批量的数据库插入临时表

  4. 这个可以防止频繁对表进行查询操作,

  5. SQL 如下:select * into #Temp from Table

  6. 后面