I need to query three tables and display the data in my client.
My code looks like this:
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 request:
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";
After my testing, if we have 1,500 lines in the cursor, we must spend more than 30 seconds to finish this line (cursor.getcount ()). If I delete this line and use ArrayList. I can find that we should spend more than 30 seconds on Cursor.moveToNext ().
So my question is: why should the cursor operation for the first time last so long? and how do we decide?
And this person has the same question. Bad SQLite implementation? The first data access path is too slow . but the answer does not work for me. By the way, I find the display of the same 1500s in Iphone, I just need amost 3s.
Thanks in advance!
source share