выберите запрос с объединением медленно выбирает данные из базы данных в Android - PullRequest
1 голос
/ 27 марта 2012

У меня есть запрос на выборку следующим образом

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; 

это занимает много времени для получения данных.Кто-нибудь может помочь улучшить производительность. Вот ПРАГМА полезна?если так как?если нет, скажите мне, как решить эту проблему.

1 Ответ

0 голосов
/ 20 апреля 2012

Я обнаружил, что SQLite на Android, кажется, имеет некоторые ... неожиданные причуды.В моем случае оказалось, что выполнение прямого запроса, например select * from Foo where Bar is null, было НАМНОГО медленнее, чем выбор только идентификаторов и последующая выборка каждой строки по идентификатору в отдельности.YMMV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...