gpt4 book ai didi

mysql - 合并后的 codeigniter 分页

转载 作者:行者123 更新时间:2023-11-29 07:00:39 31 4
gpt4 key购买 nike

我有一个脚本可以与我的数据库的不同表建立联合
我需要用分页显示结果,以使其对用户更具可读性。

这是我的代码:

//Fetch
foreach($query_info->result() as $info){

//I'm going to create a query for each row i get from the db
$query [] = (' (
SELECT
'.$info->slug.'_dog.`name`,
`age`,
'.$info->slug.'_breed.`name` as breed,
`sex`,
`link`,
`sterilized`,
\''.$info->slug.'\' as prefix
FROM
'.$info->slug.'_dog,
'.$info->slug.'_breed
WHERE
'.$info->slug.'_dog.breed = '.$info->slug.'_breed.id
AND
'.$info->slug.'_dog.type = '.$type.'
)';
}

//implode different UNION
$query_final = implode(" UNION ",$query);

如您所见,查询可能非常大。如何分页?

我的第二个选择是制作一个包含所有表格结果的完整 View ,大约 10-20 个表格...数据库哪个更快? “大”UNION 还是 View ?

最佳答案

我不知道哪个更快,但是要执行 UNION,您可以在分页的总查询末尾添加一个偏移量和限制。只有在第一个查询中,您可以在选择中添加 SQL_CALC_FOUND_ROWS。像这样:(注意 SQL_CALC_FOUND_ROWS 后面没有逗号)

(SELECT SQL_CALC_FOUND_ROWS column1, column2 FROM etc...) UNION (SELECT column1, column2 FROM etc...) LIMIT 0,10

运行查询后,立即运行此查询:

SELECT FOUND_ROWS();

它将返回总记录,就像您的查询没有 LIMIT 一样。所以基本上您不必再次运行查询来计算结果。

要创建其余的分页,您可以使用 CI 它自己的分页库: http://codeigniter.com/user_guide/libraries/pagination.html

//编辑:要从模型返回数据,您可以使用如下内容:

$results['data'] = $this->db->query($sql)->result_array();

$total = $this->db->query('SELECT FOUND_ROWS() as total')->row_array();

$results['total'] = $total['total'];

return $results;

它可能可以进一步优化。

关于mysql - 合并后的 codeigniter 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317270/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com