我在 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
问题:为什么 expressJS 框架执行查询需要很多时间,而在 phpMyAdmin 中执行查询不需要很多时间。
最佳答案
这是因为 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/