我正在使用laravel分页。我是laravel的新手,我有以下查询从作业表中获取记录,该记录绑定到站点表,作业表中有300k记录,站点中有10k记录。我还设置了索引为了获得更快的结果。当使用LIMIT 0,10获取数据时,它需要0.000秒但是使用LIMIT 299990,0需要花费太多时间。为了解决这个问题,我将查询从Query1更改为Query2。
查询1:
SELECT
s.site_name, s.postcode, j.contarct_code, j.job_num, s.site_id
FROM
to_jobs as j
LEFT JOIN
to_sites as s ON j.fk_site_id = s.site_id
LIMIT
299970, 10
QUERY2:
SELECT
s.site_name, s.postcode, j.contarct_code, j.job_num, s.site_id
FROM
to_jobs as j
LEFT JOIN
to_sites as s ON j.fk_site_id = s.site_id
WHERE
j.rec_id > 299970
LIMIT
10
我得到了预期的结果,但是当我将查询放到laravel分页时,它会给出错误的记录总数。
使用laravel代码查询1:
->select('s.site_name','s.postcode','j.contarct_code','j.job_num','j.rec_id','s.site_id')
->leftJoin('to_sites as s', 'j.fk_site_id', '=', 's.site_id')
->paginate(10);
总= 299 997
使用laravel代码查询2:
->select('s.site_name','s.postcode','j.contarct_code','j.job_num','j.rec_id','s.site_id')
->leftJoin('to_sites as s', 'j.fk_site_id', '=', 's.site_id')
->where('j.rec_id', '>', '1067512')
->paginate(10);
总计= 49
数据提取时间问题已解决,但分页记录已更改。还有其他解决办法吗?