我必须查询三个表,并将数据显示到我的 customerView 中。
我的代码是这样的:
Log.v(TAG, System.CurrentTimeMillis())
int len = cursor.getCount();
Log.v(TAG, System.CurrentTimeMillis())
Product[] products = new Product[len];
int i = 0;
while(cursor.moveToNext()){
products[i] = new Product(cursor.getstring(0),.....);
}
Log.v(TAG, System.CurrentTimeMillis())
SQLite 查询:
String sql = "SELECT T1.PRODUCT_ID, CODE, SHORT_DESCRIPTION, CATEGORY_CODE,
BRAND_CODE, FORM_CODE, DENOMINATOR, T1.PIECE_PRICE, T1.lowest_piece_price,
T2.sku_type, T1.master_sku " +
"FROM CUSTOMER_PROD_LIST_ITEMS T1 INNER JOIN PRODUCT T2 ON
T1.PRODUCT_ID = T2.ID INNER JOIN PRODUCT_UOMS ON T2.ID =
PRODUCT_UOMS.PRODUCT_ID"+
"WHERE T1.VALID = 1 AND PRODUCT_UOMS.VALID = 1 AND
CUSTOMER_PRODUCT_LIST_ID = " + customer_pdtlist_ID + "
ORDER BY T1.PRODUCT_ID ASC";
经过我的测试,如果游标中有1500行,我们必须花费超过30秒才能完成这一行(cursor.getcount())。如果我删除这一行,并使用ArrayList来进行。我发现我们应该花费超过 30 秒的时间来处理 Cursor.moveToNext()。
所以我的问题是为什么第一次光标操作要花这么长时间?我们该如何解决?
这个人也有同样的问题SQLite 实施不佳?第一次数据访问速度太慢。但答案对我不起作用。
顺便说一句,我发现在iPhone上显示同样的1500行,只需要最多3秒。
提前致谢!!