MariaDB에서 윈도우 기능이 느립니까?
다음 쿼리를 고려합니다.
select d.*
from data d
where channel_id=83
order by channel_id,timestamp
실행은 channel_id, timestamp가 색인화되면 즉시 실행됩니다.
CREATE TABLE `data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`channel_id` int(11) DEFAULT NULL,
`timestamp` bigint(20) NOT NULL,
`value` double NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `data_unique` (`channel_id`,`timestamp`),
KEY `IDX_ADF3F36372F5A1AA` (`channel_id`),
CONSTRAINT `FK_ADF3F36372F5A1AA` FOREIGN KEY (`channel_id`) REFERENCES `entities` (`id`)
)
단순한 LAG()를 추가하면 쿼리가 크롤링으로 느려집니다.
select d.*
,lag(value) over (order by channel_id,timestamp)
from data d
where channel_id=83
order by channel_id,timestamp
계획 설명:
+------+-------------+-------+------+----------------------------------+----------------------+---------+-------+--------+-----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+------+----------------------------------+----------------------+---------+-------+--------+-----------------+
| 1 | SIMPLE | d | ref | data_unique,IDX_ADF3F36372F5A1AA | IDX_ADF3F36372F5A1AA | 5 | const | 759654 | Using temporary |
+------+-------------+-------+------+----------------------------------+----------------------+---------+-------+--------+-----------------+
LAG() 문을 사용하지 않고 계획을 설명합니다.
+------+-------------+-------+------+----------------------------------+----------------------+---------+-------+--------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+------+----------------------------------+----------------------+---------+-------+--------+-------+
| 1 | SIMPLE | d | ref | data_unique,IDX_ADF3F36372F5A1AA | IDX_ADF3F36372F5A1AA | 5 | const | 759730 | |
+------+-------------+-------+------+----------------------------------+----------------------+---------+-------+--------+-------+
mariadb의 윈도우 기능에 성능 문제가 있나요?아니면 제가 이 쿼리를 잘못하고 있나요?
언급URL : https://stackoverflow.com/questions/55326017/are-window-functions-slow-in-mariadb
'programing' 카테고리의 다른 글
수천 개의 SELECT 쿼리 속도 향상 (0) | 2023.01.21 |
---|---|
pytest에서 예외가 발생한다고 올바르게 주장하는 방법은 무엇입니까? (0) | 2023.01.21 |
JavaScript에 상수가 있나요? (0) | 2023.01.21 |
junit & java : 비공개 메서드 테스트 (0) | 2023.01.21 |
C에서 Linux와 공유 메모리를 사용하는 방법 (0) | 2023.01.21 |