2
這是「雙反」表概念的延伸(飛一個查詢創建臨時表後直接丟棄)多行「雙反」表
我試圖加入多用另一個表dual
表,以避免必須使用1個語句多次使用不同的參數運行相同的查詢。
我遇到的問題之一是聯合雙表非常慢,我不知道任何更有效的方式來完成以下。 (加入50雙100毫秒在一起時)
SELECT
b.id,
b.ref_unid,
a.date
FROM
(
SELECT
'b8518a84-c501-11dd-b0b6-001d7dc91168' as unid,
'2010-01-05' as date
UNION
SELECT
'b853a1f2-c501-11dd-b0b6-001d7dc91168',
'2010-01-06'
UNION
SELECT
'b8557bd0-c501-11dd-b0b6-001d7dc91168',
'2010-01-07'
/* ... */
) as a
join other_table b
ON
b.ref_unid = a.unid
是否有實現這個目標的另一種方式?
是否有類似刀片的任何語法爲價值聲明,將實現這一目標,如:
SELECT
unid,
id
FROM
(
WITH (unid, date) USING VALUES
(
('b8518a84-c501-11dd-b0b6-001d7dc91168','2010-01-05'),
('b853a1f2-c501-11dd-b0b6-001d7dc91168','2010-01-06'),
('b8557bd0-c501-11dd-b0b6-001d7dc91168','2010-01-07'),
/* ... */
)
) as a
join other_table b
ON
b.ref_unid = a.unid
我正在尋找一個1語句的解決方案。多次訪問數據庫是不可能的。
我編碼的API允許傳遞元組列表並返回這些元組中的每個元組的對象列表。 由於傳入的元組數量通常在10-50左右,我試圖避免調用一次查詢50次,只是改變了幾個參數。 我嘗試使用多個IN語句,但它不使用任何現有的索引,不同於上面的方法,除了雙表的聯合之外,它是非常快速的。 – 2010-11-12 09:36:48