发一个优化的Yii2 试用的千万级数据分页 [ 2.0 版本 ]
use app\models\User;
use yii\data\Pagination;
$subQuery = User::find()->select('id')->where('id>0');
$count = $subQuery->count();
$pagination = new Pagination(['totalCount' => $count]);
$subQuery->offset($pagination->offset)
->limit($pagination->limit);
$query = User::find()->select('*')->from(['t1' => User::tableName(), 't2' => $subQuery])->where('t1.id=t2.id')->all();
$articles = $query->offset($pagination->offset)
->limit($pagination->limit)
->all();
print_r($articles);
xutongle
注册时间:2013-12-19
最后登录:2024-01-12
在线时长:46小时17分
最后登录:2024-01-12
在线时长:46小时17分
- 粉丝16
- 金钱660
- 威望60
- 积分1720
共 10 条评论
强强强!!!
很好,good
没看懂,为什么还要用from
SQL原型
SELECT t1.* FROM item t1, (SELECT id FROM item WHERE id>100 LIMIT 10000,20 ) t2 WHERE t1.id=t2.id;
懂了吧
改成
$articles = $query->all();
发的匆忙写错了
厉害,你这个sql解决了我想单表联查的想法
大佬,求助个问题,我想单表联查,其中id和p_id关联,
SELECT t1.,(select t3.
name
from users t3 where t3.id=t2.p_id) pname FROM users t1, (SELECT FROM users LIMIT 0,20 ) t2 WHERE t1.id=t2.id ;怎么把(select t3.
name
from users t3 where t3.id=t2.p_id)这条语句用yiiAR的方法写入呢,求指教用字符串硬插
厉害了我的哥
没看懂 哪里实用千万级数据的了
同样是limit,你试试传统写法,和我SQL原型写法就知道了
SELECT t1.* FROM ip_taobao t1, (SELECT id FROM ip_taobao LIMIT 14461600,20 ) t2 WHERE t1.id=t2.id
SELECT * FROM
ip_taobao
LIMIT 14461600, 100mark了
不能表连接?