我已經在Android應用程序中使用sql select查詢,它可以在較新版本的android上正常工作,即在Samsung galaxy選項卡(android 4.0.3)上需要30到40秒才能從數據中檢索數據sqlite數據庫,但在舊版本的android 2.3的設備上,需要18分鐘才能獲取數據。如果我刪除「order by x_unitperson.UNITSEQ」,那麼它的性能不會在android 2.3上下降。我怎樣才能提高其在android 2.3的性能,而不刪除順序的子句。在Android 2.3中的性能問題的內部連接順序
我的SQL是:
SELECT PERSON_ID,
COMMANDER,
CITIZEN,
RANK,
GIVEN,
SURNAME,
ISOR,
(SELECT GROUP_CONCAT(NAME_SHORT, '\n')
FROM units
INNER JOIN
(SELECT *
FROM x_unitperson
WHERE PERSON_ID = people.PERSON_ID
ORDER BY x_unitperson.UNITSEQ) AS xunits
WHERE units.UNIT_ID = xunits.UNIT_ID) AS NAME_SHORT,
(SELECT FNAME
FROM photos
WHERE PERSON_ID = People.PERSON_ID) AS FNAME
FROM people
ORDER BY SURNAME,
GIVEN
第一:嘗試拆分子選擇語句並檢查哪些需要更長的時間,「SELECT *」需要比「Select field1,field2」多一點,如果不是所有字段都需要 – 2013-04-25 08:23:17
您查詢的內容相當複雜。我寧願研究一種簡化它的方法,可能會逐步加載數據。此外,您是否對此查詢運行解釋查詢計劃? – njzk2 2013-04-25 09:00:07
你有這些表格的索引嗎? (指數也可以用於排序,如果我沒有記錯的話,請參閱sqlite changelog) – njzk2 2013-04-25 09:01:33