我遷移的企業Oracle數據庫到MySQL(是的,不要問我爲什麼)和(報告)幾個疑問是巨大的,在MySQL工作Oracle查詢到MySQL的左連接
其中之一是4021線, 89 INNER JOIN
這其中產生一個完全的細節,爲公司客戶報告財務的最後一年。
我需要的報告(因爲我們得到的一年即將結束)2011年的工作,我看到許多網站,最大左連接MySQL的是60點剩餘加盟。
我擰這個報告?或者我有辦法運行它?
我遷移的企業Oracle數據庫到MySQL(是的,不要問我爲什麼)和(報告)幾個疑問是巨大的,在MySQL工作Oracle查詢到MySQL的左連接
其中之一是4021線, 89 INNER JOIN
這其中產生一個完全的細節,爲公司客戶報告財務的最後一年。
我需要的報告(因爲我們得到的一年即將結束)2011年的工作,我看到許多網站,最大左連接MySQL的是60點剩餘加盟。
我擰這個報告?或者我有辦法運行它?
你將不得不跳向上(或向下,取決於你的觀點)的編程語言來解決這個問題(紅寶石,PHP,Python和等)都會使處理許多連接只要使用原生對象,而不是更容易完全依靠巨大的參與。
而且你是正確的,在MySQL連接的最大數目爲61(http://dev.mysql.com/doc/refman/5.0/en/joins-limits.html)
您提供的鏈接指出,任何一個'JOIN'語句中可以引用的表的最大數量是61,而不是任何一個查詢中'JOIN'的最大數量是61. –
如果是這樣的話,你可能想嘗試和突破查詢了一些,並得到了一些「左連接」預先查詢的內容以及其他可能的元素。例如,你可以預先查詢之類的東西(而只是猜測)與G/L科目代碼(ID列)等爲一體的預查詢類別
庫存物品。
加入,與所有的訂單細節訂購標題摘要才能獲得客戶的ID,並加入到客戶用作另一預先查詢。確保加入總體報告要求的任何關鍵要素。
繼續在列表中向下如果可能的話,你也許可以殺死一羣,因爲他們將是子查詢,沒有人水平將有61聯接事情的結果。
使用枚舉類型,這將節省你痛苦的左聯接
如果你有幾張桌子,你可以只用enum
這是一個很大的進步刪除
。特別是與什麼樣的數據,你有
我覺得你的報表查詢無論如何都會導致EXPLAIN using temporary
。您可以在事務中將單個查詢分解爲幾個,並明確地創建臨時表。
如果你的Oracle查詢包含類似於命名子查詢(我的意思是WITH
子查詢來自T-SQL,我不知道它們是否存在於Oracle中,但絕對不存在於MySQL中),這可能會更有幫助。
對於臨時表。去過也做過。 – Mchl
CTE存在於普通數據庫中,但是mysql :)))。分配給臨時表的空間也是有限的,即使在mysql中你也應該考慮這個:) –
如果您需要新的連接,因爲您的報告涵蓋新的一年,那麼您的數據模型可能不正確。 –
爲什麼不使用大寫字母? –