苛求各位开发大佬来指导

查看 53|回复 1
作者:chenhua19940128   
遇到一个面试题:
题目:假设有 100 个分类,每个分类下有至少 1000 个商品,请实现一个分页程序,要求根据客户端给定的分类 ID 和排序字段,返回下一页的数据
代码使用 php 实现,可以依赖 Laravel 实现。其他组件如 Mysql 、Redis 等等没有限制。如果实现困难,排序字段可以假设只有一个。
要求:程序运行效率较高,在商品数达到百万级别的情况下,也能高效运行
提示:直接使用一行 sql 查询到结果的方式是无法满足高效运行的,会出现慢 sql
方法示例:
/**
* @param int $categoryId 分类 ID
* @param string $sortField 排序字段
* @param int $page 当前第几页
* @param int $perPage 每页数量
*/
public function nextPage(int $categoryId, string $sortField = 'price', int $page =1, int $perPage=20)
{
    ....
}
现在能想到的是先给字段加特定的索引,但是也是一条 sql 就出来了,redis 其他的没用到,请问下如何更高的提高效率
假设表结构是这样的
     * --------------
     * id | goods_id | category_id | price | created_at | updated_at
     * -------------

int, SQL, 分类, string

chenhua19940128
OP
  
如果直接用 order by ,效率会非常低下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部