|
оптимизировать запросы
|
|||
---|---|---|---|
#18+
Код: sql 1.
авторid select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY orders_status index PRIMARY PRIMARY 4 NULL 3 Using index; Using temporary; Using filesort 1 PRIMARY orders ref PRIMARY,payment_status payment_status 5 test.orders_status.id 109757 Using where 1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 NULL 2 MATERIALIZED orders index PRIMARY paypal_account 152 NULL 439030 Using index 2 MATERIALIZED paypal_account ref paypal_account paypal_account 152 test.orders.paypal_account 1 NULL 2 MATERIALIZED paypal_account_group eq_ref PRIMARY PRIMARY 4 test.paypal_account.paypal_group 1 Using where; Using index выполняется 5 секунд Код: sql 1.
авторid select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE orders index NULL paypal_account 152 NULL 439030 Using index 1 SIMPLE paypal_account ref paypal_account paypal_account 152 test.orders.paypal_account 1 NULL выполняется 2 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 04:10 |
|
оптимизировать запросы
|
|||
---|---|---|---|
#18+
Вообще мог бы и отформатировать... Запрос 1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
1) Подзапрос во WHERE удалить. Совсем. Потому что не имеет смысла - ему соответствуют все записи. 2) Второе условие переписать на order_date >= CURRENT_DATE - INTERVAL 15 DAY . 3) Проверить, что существуют индексы: - orders(payment_status, order_date) и orders(order_date, payment_status) (посмотреть explain, оставить более подходящий); - orders_status(id) (скорее всего он существует и первичный, но кто-то не озаботился публикацией структур таблиц). 4) Заменить ORDER BY MIN(groupDate) на ORDER BY groupDate - какой смысл брать минимум от одного значения? 5) Заменить COUNT(CASE WHEN payment_status=X THEN 1 END) на SUM(payment_status=X) - результат тот же, но на одну проверку меньше. Впрочем, это мелочь. Запрос 2. Код: sql 1. 2. 3. 4.
Ну тут кроме наличия соотв. индексов ничего не требуется. Формально. Если же говорить о логике, то скорее всего `paypal_account`.`paypal_account` и `paypal_account_group`.`id` в своих таблицах уникальные поля - если это так, то оба LEFT JOIN вместе с таблицами удалить нахрен (если `paypal_account`.`paypal_account` не уникален, а `paypal_account_group`.`id` уникален - удалить только второй LEFT JOIN). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 07:45 |
|
|
start [/forum/topic.php?fid=47&msg=40097920&tid=1827951]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 279ms |
0 / 0 |