mysql - 使用 Sequelize 的 Express JS 需要更多时间来执行查询

标签 mysql node.js express sequelize.js

我在 phpMyAdmin 中有以下查询需要 0.0039 秒。。在使用 Sequelize 的 express js 框架中,相同的查询需要 6 秒。总记录为 267121.

SELECT pm.item_type,
       pm.product_type,
       pm.product_image,
       pm.product_id,
       pm.store_id,
       pm.item_type,
       pm.product_name,
       pm.product_description,
       spd.product_price
FROM product_master AS pm
JOIN store_products_detail spd ON pm.product_id = spd.product_id
WHERE spd.product_store_id IN(907)

我在 expressJS 框架中花费了一些时间。

查询执行开始时间2018-11-22T07:06:24.148Z

查询执行结束时间2018-11-22T07:06:30.249Z

enter image description here

问题:为什么 expressJS 框架执行查询需要很多时间,而在 phpMyAdmin 中执行查询不需要很多时间。

enter image description here

最佳答案

这是因为 PHPMyAdmin 有一个隐含的 LIMIT 25(在较新的版本中);所以它只获取 25 行。当您的应用程序代码获取所有行时,即 所有 267121 行。这是要传输的相当大的数据包。您可以进一步查看此答案:https://stackoverflow.com/a/53030883/2469308

您应该在应用程序代码中使用 LIMIT ..

SELECT pm.item_type,
       pm.product_type,
       pm.product_image,
       pm.product_id,
       pm.store_id,
       pm.item_type,
       pm.product_name,
       pm.product_description,
       spd.product_price
FROM product_master AS pm
JOIN store_products_detail spd ON pm.product_id = spd.product_id
WHERE spd.product_store_id IN(907)
LIMIT 25

为了提高性能,您需要以下索引:

  • product_id product_master
  • (product_id, product_store_id) store_products_detail

关于mysql - 使用 Sequelize 的 Express JS 需要更多时间来执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53425638/

相关文章:

javascript - 在 Express JS 中使用全局翻译对象

php - 使用 PDO 和 PHP 执行顺序语句的更好解决方案

php - 使用 SQL 更新了 1 列中的 2 个值

php - 在 PHP 中访问 MySQL 存储过程的返回值

MySQL:为什么索引列标记为 "BTREE?"

javascript - 通过 Google map 显示 Facebook 信息

node.js - Sinon stub throwing 试图包装已经包装的对象

javascript - Post请求在服务器端返回未定义

javascript - 如何强制 Node 的请求模块不对响应进行编码?

node.js - Mongoose 如何结合查找、排序、$ 和