diff options
author | Seif Lotfy <seif@lotfy.com> | 2012-12-29 14:49:29 +0100 |
---|---|---|
committer | Seif Lotfy <seif@lotfy.com> | 2012-12-29 14:49:29 +0100 |
commit | 2cb3761e05245fb66f26ec634e224d71ad4ec63f (patch) | |
tree | 03de4353b99b456fed1064ab36bbc95364014098 | |
parent | f647e3f3286ad87aaf3c4b34a91a69b15207dfbf (diff) |
Reduce Query plan
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | src/db-reader.vala | 73 |
2 files changed, 37 insertions, 40 deletions
diff --git a/configure.ac b/configure.ac index df5f23d1..0e141739 100644 --- a/configure.ac +++ b/configure.ac @@ -12,7 +12,7 @@ AC_PROG_CXX AC_DISABLE_STATIC AC_PROG_LIBTOOL -AM_PROG_VALAC([0.17.4]) +AM_PROG_VALAC([0.18.0]) AS_IF([test -z "$VALAC"], [AC_MSG_ERROR(["No Vala compiler found."])]) AM_SILENT_RULES([yes]) @@ -29,7 +29,7 @@ AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) GLIB_REQUIRED=2.26.0 -SQLITE_REQUIRED=3.7 +SQLITE_REQUIRED=3.7.14 VALADOC_REQUIRED=0.2 ZEITGEIST_REQUIRED="glib-2.0 >= $GLIB_REQUIRED diff --git a/src/db-reader.vala b/src/db-reader.vala index f9434e1a..2a06eca7 100644 --- a/src/db-reader.vala +++ b/src/db-reader.vala @@ -187,103 +187,103 @@ public class DbReader : Object sql += where_sql + " ORDER BY "; break; case ResultType.MOST_RECENT_EVENT_ORIGIN: - sql += group_and_sort ("origin", where_sql); + sql = group_and_sort ("origin", where_sql); break; case ResultType.LEAST_RECENT_EVENT_ORIGIN: - sql += group_and_sort ("origin", where_sql); + sql = group_and_sort ("origin", where_sql); break; case ResultType.MOST_POPULAR_EVENT_ORIGIN: - sql += group_and_sort ("origin", where_sql, false); + sql = group_and_sort ("origin", where_sql, false); break; case ResultType.LEAST_POPULAR_EVENT_ORIGIN: - sql += group_and_sort ("origin", where_sql, true); + sql = group_and_sort ("origin", where_sql, true); break; case ResultType.MOST_RECENT_SUBJECTS: - sql += group_and_sort ("subj_id", where_sql); + sql = group_and_sort ("subj_id", where_sql); break; case ResultType.LEAST_RECENT_SUBJECTS: - sql += group_and_sort ("subj_id", where_sql); + sql = group_and_sort ("subj_id", where_sql); break; case ResultType.MOST_POPULAR_SUBJECTS: - sql += group_and_sort ("subj_id", where_sql, false); + sql = group_and_sort ("subj_id", where_sql, false); break; case ResultType.LEAST_POPULAR_SUBJECTS: - sql += group_and_sort ("subj_id", where_sql, true); + sql = group_and_sort ("subj_id", where_sql, true); break; case ResultType.MOST_RECENT_CURRENT_URI: - sql += group_and_sort ("subj_id_current", where_sql); + sql = group_and_sort ("subj_id_current", where_sql); break; case ResultType.LEAST_RECENT_CURRENT_URI: - sql += group_and_sort ("subj_id_current", where_sql); + sql = group_and_sort ("subj_id_current", where_sql); break; case ResultType.MOST_POPULAR_CURRENT_URI: - sql += group_and_sort ("subj_id_current", where_sql, false); + sql = group_and_sort ("subj_id_current", where_sql, false); break; case ResultType.LEAST_POPULAR_CURRENT_URI: - sql += group_and_sort ("subj_id_current", where_sql, true); + sql = group_and_sort ("subj_id_current", where_sql, true); break; case ResultType.MOST_RECENT_ACTOR: - sql += group_and_sort ("actor", where_sql); + sql = group_and_sort ("actor", where_sql); break; case ResultType.LEAST_RECENT_ACTOR: - sql += group_and_sort ("actor", where_sql); + sql = group_and_sort ("actor", where_sql); break; case ResultType.MOST_POPULAR_ACTOR: - sql += group_and_sort ("actor", where_sql, false); + sql = group_and_sort ("actor", where_sql, false); break; case ResultType.LEAST_POPULAR_ACTOR: - sql += group_and_sort ("actor", where_sql, true); + sql = group_and_sort ("actor", where_sql, true); break; case ResultType.OLDEST_ACTOR: - sql += group_and_sort ("actor", where_sql, null, "min"); + sql = group_and_sort ("actor", where_sql, null, "min"); break; case ResultType.MOST_RECENT_ORIGIN: - sql += group_and_sort ("subj_origin", where_sql); + sql = group_and_sort ("subj_origin", where_sql); break; case ResultType.LEAST_RECENT_ORIGIN: - sql += group_and_sort ("subj_origin", where_sql); + sql = group_and_sort ("subj_origin", where_sql); break; case ResultType.MOST_POPULAR_ORIGIN: - sql += group_and_sort ("subj_origin", where_sql, false); + sql = group_and_sort ("subj_origin", where_sql, false); break; case ResultType.LEAST_POPULAR_ORIGIN: - sql += group_and_sort ("subj_origin", where_sql, true); + sql = group_and_sort ("subj_origin", where_sql, true); break; case ResultType.MOST_RECENT_CURRENT_ORIGIN: - sql += group_and_sort ("subj_origin_current", where_sql); + sql = group_and_sort ("subj_origin_current", where_sql); break; case ResultType.LEAST_RECENT_CURRENT_ORIGIN: - sql += group_and_sort ("subj_origin_current", where_sql); + sql = group_and_sort ("subj_origin_current", where_sql); break; case ResultType.MOST_POPULAR_CURRENT_ORIGIN: - sql += group_and_sort ("subj_origin_current", where_sql, false); + sql = group_and_sort ("subj_origin_current", where_sql, false); break; case ResultType.LEAST_POPULAR_CURRENT_ORIGIN: - sql += group_and_sort ("subj_origin_current", where_sql, true); + sql = group_and_sort ("subj_origin_current", where_sql, true); break; case ResultType.MOST_RECENT_SUBJECT_INTERPRETATION: - sql += group_and_sort ("subj_interpretation", where_sql); + sql = group_and_sort ("subj_interpretation", where_sql); break; case ResultType.LEAST_RECENT_SUBJECT_INTERPRETATION: - sql += group_and_sort ("subj_interpretation", where_sql); + sql = group_and_sort ("subj_interpretation", where_sql); break; case ResultType.MOST_POPULAR_SUBJECT_INTERPRETATION: - sql += group_and_sort ("subj_interpretation", where_sql, false); + sql = group_and_sort ("subj_interpretation", where_sql, false); break; case ResultType.LEAST_POPULAR_SUBJECT_INTERPRETATION: - sql += group_and_sort ("subj_interpretation", where_sql, true); + sql = group_and_sort ("subj_interpretation", where_sql, true); break; case ResultType.MOST_RECENT_MIMETYPE: - sql += group_and_sort ("subj_mimetype", where_sql); + sql = group_and_sort ("subj_mimetype", where_sql); break; case ResultType.LEAST_RECENT_MIMETYPE: - sql += group_and_sort ("subj_mimetype", where_sql); + sql = group_and_sort ("subj_mimetype", where_sql); break; case ResultType.MOST_POPULAR_MIMETYPE: - sql += group_and_sort ("subj_mimetype", where_sql, false); + sql = group_and_sort ("subj_mimetype", where_sql, false); break; case ResultType.LEAST_POPULAR_MIMETYPE: - sql += group_and_sort ("subj_mimetype", where_sql, true); + sql = group_and_sort ("subj_mimetype", where_sql, true); break; default: string error_message = "Invalid ResultType."; @@ -600,12 +600,9 @@ public class DbReader : Object } return """ - NATURAL JOIN ( - SELECT %s, - %s(timestamp) AS timestamp + SELECT DISTINCT id, %s, %s(timestamp) AS timestamp %s - FROM event_view %s - GROUP BY %s) + FROM event_view %s AND %s > 0 GROUP BY %s ORDER BY %s """.printf ( |