Код: Выделить всё
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
Код: Выделить всё
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> 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();
Я стараюсь пере повторить запрос от клиента 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
Мобильная версия