0
我有這樣的說法:性能問題聲明
select qulified_name
from table
inner join references_table on references_table.id = table.ref_id
where references_table.type = 'x' and table.value in (... +110 000 ids)
這是緩慢的極端。 (網絡應用程序崩潰並且沒有得到結果 我在rom-rb的幫助下創建了我的聲明並使用了續集,但是這是當我查看聲明時得到的聲明
如果我重寫這樣的保護 - 諮詢熱點相比第一個版本的表現真的很不錯:
select qulified_name
from table
inner join (select unnest(array['#{references_id.join("','")}']) id) as tmp on tmp.id = businesspartner_references.value
inner join references_table on references_table.id = table.ref_id
where references_table.type = 'x'
這樣,我得到的結果〜3秒
誰能給我解釋一下爲什麼是這樣的情況。 ?我不明白..
嘗試使用'explain'運行兩者 - 我猜臨時表的連接速度比in子句的掃描速度快很多 – paqash
您使用的是哪個版本的rom-rb? – solnic
@solnic rom3.1.0,rom-repository 1.2.0和rom-sql 1.1.1但是來自karthik的回答對我來說足夠了。謝謝! – Shimu