如何分批次取数据库数据?

如何分批次取数据库数据?,第1张

数据库分页嘛,很简单,看下面的代码

分页方案一:(利用Not In和SELECT TOP分页)

语句形式:

SELECT TOP 10 *

FROM TestTable

WHERE (ID NOT IN

(SELECT TOP 20 id

FROM TestTable

ORDER BY id))

ORDER BY ID

--SELECT TOP 20 id FROM TestTable ORDER BY id 查出前20条记录

--查出所有记录中不在前20条记录之外的前10条记录

SELECT TOP 页大小 *

FROM TestTable

WHERE (ID NOT IN

(SELECT TOP 页大小*页数 id

FROM 表

ORDER BY id))

ORDER BY ID

-------------------------------------

分页方案二:(利用ID大于多少和SELECT TOP分页)

语句形式:

SELECT TOP 10 *

FROM TestTable

WHERE (ID >

(SELECT MAX(id)

FROM (SELECT TOP 20 id

FROM TestTable

ORDER BY id) AS T))

ORDER BY ID

--查出所有记录中不在前20条记录的最大值

SELECT TOP 页大小 *

FROM TestTable

WHERE (ID >

(SELECT MAX(id)

FROM (SELECT TOP 页大小*页数 id

FROM 表

ORDER BY id) AS T))

ORDER BY ID

-------------------------------------

分页方案三

select top 50 * from (select top 100 * from sysobjects order by id) as a order by id desc

或者 SELECT TOP PageSize * FROM(SELECT TOP nPage*PageSize * from YOURTABLE )

百万级的数据库表,好像也不用这么麻烦吧?

直接写一个php,递归执行就差不多了,但是php.ini中,将memory_limit设置大一些,再将mysql.connect_timeout值加大些,max_execution_time设置的值大一些。

如果不想设置这些,在程序中使用 ini_set() 函数也是可以的,一开始先递归小一些做十几条,测试通过了再递归所有数据,然后等就行了。

在等待的过程中,你可以用phpmyadmin等工具查看实时进度,如果发现问题,重启web服务器进程,就中止运行了,然后再试。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6826752.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存