Android 2.3.3 SQLite无限循环

时间:2013-06-19 20:35:16

标签: android sqlite

在我的项目中,我有5个表:Category,CategoryHasProduct,Product,StoreHasProduct和Store。在那里,我存储了我的所有产品,它们的类别以及哪个产品可用的商店。

现在,我想知道所有类别中有多少产品可用,具体取决于所选的商店。出于性能原因,我想为此使用SQL查询。查询是

SELECT 
    count(*), 
    cp.category_id 
FROM 
    categoryhasproduct cp, 
    product p, 
    storehasproduct sp 
WHERE 
    p.sku = cp.product_id AND 
    sp.product_id = p.sku AND 
    sp.store_id = 2 AND 
    sp.isActive = 1  
GROUP BY cp.category_id

在项目中我使用ORMLite。但是为了查询这个,我做了一个基本的db-query

String query = "...";
SQLiteDatabase db = DBConnector.getConnector(context).getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);

现在我遇到了一个问题,这对我来说毫无意义。在Android 4.0.3上,一切正常。查询需要0.5秒才能运行,我可以继续。但是当我尝试在Android 2.3.3上执行查询时,查询本身似乎遇到了无限循环。即使在20分钟后,查询也没有完成。在真实设备上,设备的处理器变得非常热,因此它会自行关闭。

正如我对查询进行了一些尝试,似乎对2.3.3设备上的sqlite来说很大。与最后一个storehaseproduct-table的连接似乎将查询扩大到很多。我还尝试了其他语句,如嵌套查询或连接,但似乎它们也有同样的问题。

有没有人观察过sqlite这种奇怪的行为?还有一个更重要的问题:我能做些什么来使这个查询在Android 2.3.3上运行时运行时间几乎相等?

0 个答案:

没有答案