2
我有下面的SQL查詢,它無法執行的錯誤「查詢處理器耗盡內部資源,並不能產生查詢計劃。這是一個罕見的事件,只有預期的非常複雜的查詢或引用大量表或分區的查詢,請簡化查詢。「左加入與條件引發查詢處理器錯誤
SELECT merchant.id,merchant.name,order.id,order.name,order.shipaddress
FROM orders AS order
LEFT JOIN
merchants AS merchant
ON
order.merchantid = merchant.id
WHERE
order.id IN (12 , 50 , 60 , 48,.. ...(upto 38000 id's))
ORDER BY order.id
如果我刪除where條件,相同的查詢運行左連接條件或內連接conidtion罰款(並返回65記錄)。
它也適用於包含條件的地方,但僅限於內部連接。最初我認爲它在WHERE條件下的IN子句的問題,但現在我有點困惑如何左是造成這個問題。
任何幫助我如何解決這個問題。一種解決方法是將WHERE子句中的所有記錄插入到臨時表中並按照下面的說明使用它。但是這個問題與相同?
The query processor ran out of internal resources exception
您應該在表中存儲38,000個ID並在表上使用'JOIN','IN'或'EXISTS'。它會更快,特別是如果表有索引。而且,'left join'是多餘的,因爲'WHERE'條件將它變成了一個內連接。 –
我想臨時表是要走的路。而且,當左連接將右側表的條件放在ON子句中時,即查詢中存在左連接問題,即將WHERE子句條件移至ON子句(使用AND)以獲得真正的左連接行爲。現在您可以定期獲得內部連接結果。 – jarlh
把你的ID放到表變量中並使用'join' /'exists'。 「 –