在嵌入式數據庫,如SQLite的,沒有客戶端/服務器通信的開銷,所以它實際上是可行的執行很多小的查詢是這樣的:
SELECT id, x, y, z FROM TableB WHERE id_A = ?
如果你真的想用對於所有的B子對象的加載單個查詢,你可以使用單獨的查詢是這樣的:
SELECT id, name, foo, bar FROM TableA ORDER BY id;
SELECT id_A, id, x, y, z FROM TableB ORDER BY id_A;
你會再經過兩個C步驟並行,並且對於每個A記錄,收集具有相同ID的所有B記錄;在ORDER BY子句確保你看到他們在正確的順序:
cursorA = db.query(...);
cursorB = db.query(...);
cursorB.moveToFirst();
while (cursorA.moveToNext()) {
id = cursor.getInt(0);
a = new ObjectA(id, ...);
while (!cursorB.isAfterLast() &&
cursorB.getInt(0) == id) {
b = new ObjectB(...);
a.addB(b);
cursorB.moveToNext();
}
}
請注意,這是不太可能有太大的比做各設置一個單獨的查詢更有效,因爲排序上id_A
列的所有記錄並不比在同一列上進行多次查找更有效。 (但是,如果沒有該列的索引,查找將比排序慢得多。)
你需要什麼代碼?這是一個概念問題,我沒有任何代碼。 – Ixx