Express JS с Sequelize требует больше времени для выполнения запроса - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующий запрос, который занимает 0,0039 секунд. в phpMyAdmin.Тот же запрос занимает 6 секунд в среде экспресс-JS с Sequelize.Всего записей: 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.

query execution start time 2018-11-22T07:06:24.148Z

query execution end time 2018-11-22T07:06:30.249Z

enter image description here

Вопрос: Почему для выполнения запроса в среде expressJS требуется много времени, а в phpMyAdmin - много времени.

enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

Это потому, что 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 таблица
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...