Запрос быстро запустить из MySQL CLI, но очень медленно по коду R2DBCTEMPLATEMySql

Форум по Mysql
Ответить
Anonymous
 Запрос быстро запустить из MySQL CLI, но очень медленно по коду R2DBCTEMPLATE

Сообщение Anonymous »

В настоящее время у меня есть запрос < /p>

Код: Выделить всё

SELECT
al.category,
IFNULL(jt.name, 'Ungrouped Devices') AS device_group_name,
IFNULL(jt.id, '00000000-0000-0000-0000-000000000000') AS device_group_id,
jt.color_code AS color_code,
COUNT(*) AS total
FROM
alerts AS al,
JSON_TABLE( CAST(al.device_groups AS JSON),
'$[*]' COLUMNS ( name VARCHAR(255) PATH '$.device_group_name',
id VARCHAR(255) PATH '$.device_group_id',
color_code VARCHAR(255) PATH '$.color_code' ) ) AS jt
WHERE
account_id = 1000000000
GROUP BY
category,
device_group_name,
device_group_id,
color_code
Когда я запускаю запрос из mysql cli Дайте путь выполнения

Код: Выделить всё

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Table scan on   (actual time=41540.274..41554.003 rows=1956 loops=1)
-> Aggregate using temporary table  (actual time=41540.265..41540.265 rows=1956 loops=1)
-> Nested loop inner join  (actual time=0.192..15244.892 rows=676934 loops=1)
-> Filter: ((al.alert_type_id  40) and (al.alert_type_id  90) and (al.event_time >= TIMESTAMP'2024-11-22 00:00:00') and (al.event_time < TIMESTAMP'2025-02-20 00:00:00'))  (cost=7946.96 rows=75045) (actual time=0.034..6171.038 rows=676934 loops=1)
-> Index lookup on al using PRIMARY (account_id=1091000508)  (cost=7946.96 rows=216200) (actual time=0.031..4714.982 rows=676934 loops=1)
-> Materialize table function  (actual time=0.012..0.013 rows=1 loops=676934)
|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (41.90 sec)
< /code>
Однако, когда я запускаю один и тот же запрос в коде < /p>
    template
.getDatabaseClient()
.sql(sql)
.map(EVENT_CATEGORY_METRIC_ROW_MAPPER)
.all();
, который занимает более 5 минут .
Я стараюсь пере повторить запрос от клиента dbeaver , который дает результат ( Запрос запустить более 5 минут, так же, как из кода). < /p>
-> Table scan on (actual time=355837.677..355838.448 rows=1956 loops=1)
-> Aggregate using temporary table (actual time=355837.668..355837.668 rows=1956 loops=1)
-> Nested loop inner join (actual time=0.120..7819.864 rows=676934 loops=1)
-> Filter: ((al.alert_type_id 40) and (al.alert_type_id 90) and (al.event_time >= TIMESTAMP'2024-11-22 00:00:00') and (al.event_time < TIMESTAMP'2025-02-20 00:00:00')) (cost=7207.37 rows=67649) (actual time=0.050..3442.970 rows=676934 loops=1)
-> Index lookup on al using PRIMARY (account_id=1091000508) (cost=7207.37 rows=216200) (actual time=0.043..2399.595 rows=676934 loops=1)
-> Materialize table function (actual time=0.006..0.006 rows=1 loops=676934)
< /code>
Обратите внимание, что CLI и Code /Dbeaver запускаются на том же хосте.
кажется, что пути выполнения одинаковы. Зачем запрос CLI работать намного быстрее, чем у другого кода/dbeaver?

Подробнее здесь: https://stackoverflow.com/questions/794 ... plate-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»