我的数据库中有这么多值
so many values in my DB
我的数据库 table 中有 4,000,000 行,我如何处理它们 100 by 100
?
在SQL服务器中你可以使用OFFSET FETCH.
在下面的示例中,它将 select 100 行从 0 (1-100) 开始。如果您想 select 接下来的 100 行 (101-200),您可以更改为 OFFSET 100
等
SELECT * FROM YourTable
ORDER BY Id
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY
SELECT * FROM YourTable
ORDER BY Id
LIMIT 0,100
和下一个电话
SELECT * FROM YourTable
ORDER BY Id
LIMIT 100,100
然后是
SELECT * FROM YourTable
ORDER BY Id
LIMIT 200,100
当然,不要在代码中重复查询 10 000 次,而是将其放入 for 循环中。
由于您的问题是用 Drupal 标记的,我假设您想要一个 drupal 答案。
您可以使用函数 db_query_range.
例如。
$result = db_query_range('SELECT n.nid, n.title, n.created
FROM {node} n WHERE n.uid = :uid
ORDER BY n.created DESC', 0, 100, array(':uid' => $uid));
foreach ($result as $record) {
// Perform operations on $record->title, etc. here.
}
我的数据库 table 中有 4,000,000 行,我如何处理它们 100 by 100
?
在SQL服务器中你可以使用OFFSET FETCH.
在下面的示例中,它将 select 100 行从 0 (1-100) 开始。如果您想 select 接下来的 100 行 (101-200),您可以更改为 OFFSET 100
等
SELECT * FROM YourTable
ORDER BY Id
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY
SELECT * FROM YourTable
ORDER BY Id
LIMIT 0,100
和下一个电话
SELECT * FROM YourTable
ORDER BY Id
LIMIT 100,100
然后是
SELECT * FROM YourTable
ORDER BY Id
LIMIT 200,100
当然,不要在代码中重复查询 10 000 次,而是将其放入 for 循环中。
由于您的问题是用 Drupal 标记的,我假设您想要一个 drupal 答案。
您可以使用函数 db_query_range.
例如。
$result = db_query_range('SELECT n.nid, n.title, n.created
FROM {node} n WHERE n.uid = :uid
ORDER BY n.created DESC', 0, 100, array(':uid' => $uid));
foreach ($result as $record) {
// Perform operations on $record->title, etc. here.
}