[英]What is the fastest method for performing more than 64 table joins in SQlite?
我計划為SQLite生成查詢,這將涉及12個表上的許多連接,這些連接將超過SQLite中的64個表連接限制。 (~250表連接或可能更多)這將最終在android上運行。 這背后的目的是在結果集中具有X量的用戶定義字段,具體取決於正在生成的報告。
不幸的是,我不是DBA,我不知道實現這一目標的最佳方法。
到目前為止,我認為選項是:
n
臨時表中。 (其中n
小於64)然后將所有臨時表加入其公共密鑰。 還有什么我應該考慮的嗎?
當你試圖加入那么多表時,我不認為你可以在任何關系數據庫平台上“快速” - 任何一種內置優化都會放棄重影。 當我在查詢中看到多達十個表時,我可能會查看我的設計。
我認為您的架構設計需要重新審視。 模式中的250多個表(在電話上!)對我沒有意義 - 我在一個具有200 + GB數據的數據庫中運行多個企業應用程序,但仍然只有84個表。 而且我從未加入所有這些人。 你的所有表都有不同的列嗎? 真的不一樣嗎? 你能從sqlite_master
一些條目嗎?
根據您對Mike的回復的評論,“生成報告的查詢需要多次加入並重新加入”。
通常,在處理報表時,您需要將查詢拆分為一口大小的塊,並將中間結果存儲在適用的臨時表中。
此外,你的問題使它聽起來像你有一個實體/屬性/值存儲,並試圖轉動整個事情。 如果是這樣,您可能需要重新使用此設計反模式,因為它可能是您的問題的根源。
由於您的應用程序在Android設備上運行,我猜它會與某個服務器上的企業級數據庫同步。 真正的解決方案是在設備數據庫上生成服務器數據的非規范化表示,因此可以更容易地訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.