2016-11-09 5 views
0

Performance weise, die man (für eine einzelne Tabelle) besser ist:Android SQLite Performance: Mehrere Auswahlmöglichkeiten in einzelnen Abfrage Vs einzelne Auswahl in mehreren Abfragen?

  1. Mehrfachauswahl in einzelnen Abfrage oder
  2. Einzel mehrere Abfragen auswählen, die in?

Beispiel:

/*table schema*/ 
create table ACTIVITY_TABLE (
ID integer primary key autoincrement, 
INTERVAL_ID integer not null, 
ACTIVITY_TYPE text , 
WIFI_LIST text, 
COUNT integer not null); 



/*Multipe selects in single query*/ 
select * from 
    (select sum(COUNT)/60 as Physical from ACTIVITY_TABLE where INTERVAL_ID >=1 and INTERVAL_ID <=3 and (ACTIVITY_TYPE="Still" or ACTIVITY_TYPE = "Walking" or ACTIVITY_TYPE = "Running" )), 
    (select sum(COUNT)/60 as vehicular from ACTIVITY_TABLE where INTERVAL_ID >=1 and INTERVAL_ID <=3 and (ACTIVITY_TYPE="InVehicle")); 

Antwort

1

Für Ihr Beispiel können Sie die Abfrage in der folgenden Art und Weise ändern, die viel effizienter sein wird, ich habe die Abfrage nicht getestet.

select 
sum(case when activitytype='walking' or activitytype='still' or activitytype='running' then COUNT else 0 end)/60 as physical, 

sum(case when activitytype='InVehicle' then COUNT else 0 end)/60 as vehicular 

from 

activity_table 

where interval_id>=1 and interval_id<=3 
+0

dank @Mohanraja, aber Ihre Abfrage gibt mir nicht erwartetes Ergebnis – ctu

+0

@ctu i i COUNT verpasst erraten & (/ 60) Teil, werde ich diesen Teil bearbeiten, versuchen Sie es – Mohanraja

+0

jetzt nun die Abfrage erwartet ergibt Ergebnis. Es wäre nett, ein Skript oder einen Code zu haben, um die Leistung beider Abfragen zu überprüfen. Ich werde etwas googlen, vielleicht kann ich ein sqlite-Abfrage-Leistungstester finden, weil im Moment beide Abfragen (deins und meins) das Ergebnis in 1ms zurückgeben, daher kann ich wirklich nicht sagen, welches besser ist. Danke für deine Eingabe :) – ctu

Verwandte Themen