2017-11-29 7 views
0

PostgreSQL db에서 채우고 Apache Ignite에서 쿼리를 실행하려고합니다. 문제는 그 것이다Apache Ignite : IN 쿼리가 너무 느립니다.

Suppoe 나는 8700와 10,000의 기록을 각각 가지고있는 2 개의 캐시 A와 B를 가지고있다. 내가 쿼리를 실행하는 독립적 인 쿼리 여기

SELECT id, name FROM "tn".tn WHERE id IN (6838);

SELECT id FROM "pcm".pcm WHERE code=1222;

, 6838은 1 쿼리에 의해 반환됩니다. 이 쿼리는 약 6ms 및 10ms를 소요합니다. 내가

SELECT id, name FROM "tn".tn WHERE id IN (SELECT id FROM "pcm".pcm WHERE code=1222);

을 실행할 때 는 그러나이 9000ms 주위에 걸립니다.

누군가이 쿼리가 왜 그렇게 많은 시간을 들여야하는지 파악할 수 있습니까? 추신 : 나는 현재 ignite에 대한 색인을 만들지 않았습니다.

답변

-1
select id, tn.name 
from 
    pcm.pcm 
    inner join 
    tn.tn using (id) 
where pcm.code = 1222 
+0

'6838'가 문제의 첫번째 쿼리의 결과이다. 귀하의 질의가 의도 한 것과 같지 않다고 생각합니다. – ajaysingh

+0

@ajaysingh 고마워, 고정 –

4

운영자 IN은 색인을 사용하지 않습니다. 당신은 조인으로 대체해야합니다

https://apacheignite-sql.readme.io/docs/performance-and-debugging#section-sql-performance-and-usability-considerations

+0

현재 색인없이 모든 쿼리를 실행하고 있습니다. 심지어 IN 쿼리를 '내부 조인'으로 대체했지만 여전히 3398ms를 사용하고 있습니다. 이는 여전히 독립적 인 쿼리 시간 결합보다 너무 많은 것입니다. – ajaysingh