Remove unneeded join onto apk which was causing performance problems.

This join resulted in one row for each apk in the result set (before
doing a GROUP BY), instead of one row for each apk. That is a large
difference in number of rows and resulted in much more work for sqlite.
Turns out this join wasn't required.
This commit is contained in:
Peter Serwylo 2017-08-22 12:59:25 +10:00 committed by Hans-Christoph Steiner
parent 80259d00ba
commit 620affa239

View File

@ -217,7 +217,6 @@ public class AppProvider extends FDroidProvider {
protected String getRequiredTables() {
final String pkg = PackageTable.NAME;
final String app = getTableName();
final String apk = getApkTableName();
final String repo = RepoTable.NAME;
final String cat = CategoryTable.NAME;
final String catJoin = getCatJoinTableName();
@ -226,8 +225,7 @@ public class AppProvider extends FDroidProvider {
" JOIN " + app + " ON (" + app + "." + Cols.PACKAGE_ID + " = " + pkg + "." + PackageTable.Cols.ROW_ID + ") " +
" JOIN " + repo + " ON (" + app + "." + Cols.REPO_ID + " = " + repo + "." + RepoTable.Cols._ID + ") " +
" LEFT JOIN " + catJoin + " ON (" + app + "." + Cols.ROW_ID + " = " + catJoin + "." + CatJoinTable.Cols.APP_METADATA_ID + ") " +
" LEFT JOIN " + cat + " ON (" + cat + "." + CategoryTable.Cols.ROW_ID + " = " + catJoin + "." + CatJoinTable.Cols.CATEGORY_ID + ") " +
" LEFT JOIN " + apk + " ON (" + apk + "." + ApkTable.Cols.APP_ID + " = " + app + "." + Cols.ROW_ID + ") ";
" LEFT JOIN " + cat + " ON (" + cat + "." + CategoryTable.Cols.ROW_ID + " = " + catJoin + "." + CatJoinTable.Cols.CATEGORY_ID + ") ";
}
@Override