programing

Maria에서 데이터 부분 집합 선택 속도를 높이는 방법DB

megabox 2023. 9. 21. 20:12
반응형

Maria에서 데이터 부분 집합 선택 속도를 높이는 방법DB

많은 데이터(170GB 압축 크기, 380만 행)가 포함된 거대한 표를 가지고 있는데 이 데이터의 부분 집합을 선택하고 싶습니다.

이 부분 집합은 요독 목록에 의해 정의됩니다.제 테이블에 있는 소변기가 있는 열에는 해시 인덱스가 표시되어 있습니다.

그래서 간단한 질문은

SELECT * FROM mytable WHERE uri IN ("uri1","uri2","uri")

하지만 이 쿼리는 엄청나게 느립니다.약 190의 uris에 대해서는 6시간 이상 지속됩니다.

Query OK, 240777 rows affected (6 hours 46 min 1.34 sec)

이 선택의 속도를 높일 수 있는 방법이 있습니까?현재로서는 외부 도구에서 전체 데이터베이스를 반복하고 관련 행을 버리는 것이 더 빠릅니다.

편집

질의에 대한 설명은 다음과 같습니다.

+------+-------------+---------+-------+---------------+----------+---------+------+--------+-------------+
| id   | select_type | table   | type  | possible_keys | key      | key_len | ref  | rows   | Extra       |
+------+-------------+---------+-------+---------------+----------+---------+------+--------+-------------+
|    1 | SIMPLE      | SOURCES | range | site_uri      | site_uri | 257     | NULL | 421418 | Using where |
+------+-------------+---------+-------+---------------+----------+---------+------+--------+-------------+
1 row in set (0.00 sec)

uri 컬럼에 인덱스가 있습니까?

인덱스만으로도 도움이 될 수 있습니다.그렇지 않은 경우 UNION은 상황을 더 빠르게 만들 수 있습니다(상당히 추하긴 하지만).

SELECT * FROM mytable WHERE uri = "uri1"
UNION 
SELECT * FROM mytable WHERE uri = "uri2"
UNION
SELECT * FROM mytable WHERE uri = "uri"

언급URL : https://stackoverflow.com/questions/35244506/how-to-speed-up-a-selection-of-a-subset-of-data-in-mariadb

반응형