From 1ae1ae73685f955493ca165520117b1d6b441ddf Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Sun, 13 Dec 2015 18:04:02 +1100 Subject: [PATCH] Add indexes to temp tables when updating. The idnexes which are added are for those columns which are used to calculate information such as latest upstream version. These queries use subqueries which seemed to be adversely impacted by the lack of indexes. In total, reduced update time on test device from just over 100 seconds to just over 60 seconds. --- F-Droid/src/org/fdroid/fdroid/data/TempApkProvider.java | 3 +++ F-Droid/src/org/fdroid/fdroid/data/TempAppProvider.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/F-Droid/src/org/fdroid/fdroid/data/TempApkProvider.java b/F-Droid/src/org/fdroid/fdroid/data/TempApkProvider.java index bf4cd7340..269437122 100644 --- a/F-Droid/src/org/fdroid/fdroid/data/TempApkProvider.java +++ b/F-Droid/src/org/fdroid/fdroid/data/TempApkProvider.java @@ -123,6 +123,9 @@ public class TempApkProvider extends ApkProvider { private void initTable() { write().execSQL("DROP TABLE IF EXISTS " + getTableName()); write().execSQL("CREATE TABLE " + getTableName() + " AS SELECT * FROM " + DBHelper.TABLE_APK); + write().execSQL("CREATE INDEX IF NOT EXISTS apk_vercode on " + getTableName() + " (vercode);"); + write().execSQL("CREATE INDEX IF NOT EXISTS apk_id on " + getTableName() + " (id);"); + write().execSQL("CREATE INDEX IF NOT EXISTS apk_compatible ON " + getTableName() + " (compatible);"); } } diff --git a/F-Droid/src/org/fdroid/fdroid/data/TempAppProvider.java b/F-Droid/src/org/fdroid/fdroid/data/TempAppProvider.java index 5949c97e9..e60a8271e 100644 --- a/F-Droid/src/org/fdroid/fdroid/data/TempAppProvider.java +++ b/F-Droid/src/org/fdroid/fdroid/data/TempAppProvider.java @@ -114,6 +114,9 @@ public class TempAppProvider extends AppProvider { private void initTable() { write().execSQL("DROP TABLE IF EXISTS " + getTableName()); write().execSQL("CREATE TABLE " + getTableName() + " AS SELECT * FROM " + DBHelper.TABLE_APP); + write().execSQL("CREATE INDEX IF NOT EXISTS app_id ON " + getTableName() + " (id);"); + write().execSQL("CREATE INDEX IF NOT EXISTS app_upstreamVercode ON " + getTableName() + " (upstreamVercode);"); + write().execSQL("CREATE INDEX IF NOT EXISTS app_compatible ON " + getTableName() + " (compatible);"); } private void commitTable() {