2012-03-27 27 views
1

選擇數據我有選擇查詢如下選擇查詢與聯接是慢慢地從數據庫中的Android

SELECT DISTINCT tt.firstname, 
       tt.lastname, 
       tc.caseid, 
       tt.courtcode    AS courtid, 
       tcou.courtname, 
       (SELECT COUNT(*) 
       FROM tblcasetrafficticketlink 
       WHERE caseid = tc.caseid) AS ticketcount, 
       Max(tt.violationdate)  AS violationdate, 
       (tt.address1 
        || ',' 
        || tt.address2)   AS address, 
       tt.city, 
       tt.state, 
       tt.zip, 
       tt.dob, 
       tt.sex 
FROM tblcase tc 
     LEFT OUTER JOIN tblcasetrafficticketlink tcttl 
     ON tc.caseid = tcttl.caseid 
     LEFT OUTER JOIN tbltraffictickets tt 
     ON tcttl.courtid = tt.courtcode 
      AND tt.ticketnumber = tcttl.ticketnumber 
      AND (tcttl.ticketextension = tt.ticketnumberex 
        OR tt.ticketnumberex IS NULL) 
     LEFT OUTER JOIN tblcourts tcou 
     ON tcou.courtid = tt.courtcode 
WHERE tc.casetype = 'TRAFFIC' 
     AND tc.caseid<='"+recent_min_caseID+"' 
GROUP BY tc.caseid, 
      tt.firstname, 
      tt.lastname, 
      tt.dob, 
      tt.sex, 
      tt.courtcode, 
      tcou.courtname, 
      tt.city, 
      tt.state, 
      tt.zip, 
      tc.casestatus, 
      tt.address1, 
      tt.address2 
ORDER BY tc.caseid DESC 
LIMIT 100; 

這是需要很長時間來獲取數據。任何人都可以幫助提高性能。這裏PRAGMA很有用嗎?如果是的話如何?如果沒有,告訴我解決這個問題的方法。

+0

時間取決於您從數據庫中獲取多少數據,當數據從數據庫加載時,您可以設置進度對話框。 – Hasmukh 2012-03-27 12:31:34

+0

感謝您的回覆Mr.Hasmukh完全選擇記錄需要4-5秒我想減少那個時間 – user1108995 2012-03-27 12:41:29

+0

我有3個表每個表有近4000條記錄和15列如何加入這些表,我想在從數據庫中檢索數據獲得快速響應。 – user1108995 2012-03-27 12:48:58

回答

0

我發現Android上的SQLite似乎有一些......意想不到的怪癖。就我而言,事實證明,像select * from Foo where Bar is null這樣的直接查詢比選擇只有的ID要慢,然後通過ID單獨獲取每一行。因人而異。