SimpleCursorAdapter で満たされた ListView を表示しようとしています。SimpleCursorAdapter は、次のような rawQuery の実行で満たされた Cursor を受け取ります。
SELECT DISTINCT s.cod AS _id, s.name AS name FROM supplier s
INNER JOIN product p ON p.supplier = s.cod
INNER JOIN productprice pp ON pp.product = p.cod
WHERE
pp.category = 'w'
ORDER BY s.name
このクエリをベースで直接実行すると、0.1 秒未満 (通常) で 40 行が返されます。リポジトリでの rawQuery の実行も非常に高速です。問題は、私がするときですmyListView.setAdapter(simpleCursorAdapter);
。2分以上かかります!だから私はクエリをに変更しSELECT cod AS _id, name FROM supplier ORDER BY name
、その実行setAdapter
はかなり高速でした(「通常の高速」hsh)。
私の質問: listView を埋めるために rawQuery で実行できる JOIN の制限はありますか? 私は何か間違ったことをしていますか?rawQuery() の代わりに、リポジトリで query() を使用する必要がありますか?
英語で申し訳ありませんが、事前に感謝します。