node.js - 我对较大偏移量的 Sequelize 分页响应缓慢

标签 node.js api pagination sequelize.js node-modules

我有关于产品的大量数据,我猜有 140 个字段分成不同的表。
当我选择第一页数据时它工作正常,但是当我选择第 19 或 20 页时,它变得非常慢。
当我请求 Page=1 和 pageSize=100 时,我会在 35 秒内得到响应。
但是当我增加页码时说 19
它在 8 分钟或更长时间内响应。
指导我一些最佳和更专业的方式。
任何提示将不胜感激。
我的 API 处理程序有点像

    const page = req.query.page || 1
    const pageSize = req.query.pageSize || 30
    try {
        const data = await BasicProductDetail.findAll({
            include: [
                { model: AdditionalProductDetail },
                { model: Catalog },
                { model: ImageDetail },
                { model: Manufacturer },
                { model: Measurement },
                { model: PriceAndCost },
                { model: ProductClass },
                { model: Selling },
                { model: UPC },
                { model: Usage }
            ],
            limit : pageSize,
            offset : (page - 1) * pageSize,
            order : [ ['id', 'ASC']]
        })
        const count = await BasicProductDetail.count({ })
        res.json({
            data: data,
            count : count
        })
    } catch (error) {
        console.log(error)
        return res.status(500).send(Something Went Wrong!!!)
    }
}```
=================================

最佳答案

几个建议。

  • 您可以使用 findAndCountAll 方法,而不是使用两个不同的查询。它将返回行数据和计数。
  • 确保每个模型都完成了正确的索引
  • 与其拉取所有属性,不如尝试指定所需的属性集。
  • 关于node.js - 我对较大偏移量的 Sequelize 分页响应缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66963779/

    相关文章:

    swift - 未在完成处理程序中设置变量

    php - 跟踪一系列分页结果的项目总数

    PHP 新闻每页 5/分页 下一页 - 上一页

    node.js - Angular 如何在组件中使用嵌入脚本

    javascript - 对多个 MongoDB 聚合函数使用 Async Parallel

    css - 将样式组件与从 node_module 导入的 CSS 文件一起使用

    node.js - 应用程序无法连接到 DigitalOcean Droplet 上的 mongodb

    android - 在哪个 Android API 下分发应用程序

    java - 我可以使用 Fitbit Api 获取我的 Fitbit 的加速度数据吗?

    ios - 如何使用 swift 创建带有页面控件的 ScrollView ?