From b9ff1ddc759d891d244abf22a6b9d2e8446325bf Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Tue, 30 Dec 2008 18:23:34 +0100 Subject: [PATCH] performance boost for inital backlog replay when using fixed-per-buffer --- src/core/SQL/SQLite/13/select_messagesNew.sql | 7 ------- src/core/sql.qrc | 3 ++- src/core/sqlitestorage.cpp | 10 +++++++--- 3 files changed, 9 insertions(+), 11 deletions(-) delete mode 100644 src/core/SQL/SQLite/13/select_messagesNew.sql diff --git a/src/core/SQL/SQLite/13/select_messagesNew.sql b/src/core/SQL/SQLite/13/select_messagesNew.sql deleted file mode 100644 index 69d948d6..00000000 --- a/src/core/SQL/SQLite/13/select_messagesNew.sql +++ /dev/null @@ -1,7 +0,0 @@ -SELECT messageid, time, type, flags, sender, message -FROM backlog -JOIN sender ON backlog.senderid = sender.senderid -WHERE bufferid = :bufferid - AND backlog.messageid >= :firstmsg -ORDER BY messageid DESC -LIMIT :limit diff --git a/src/core/sql.qrc b/src/core/sql.qrc index 319a5682..89295dd2 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -53,7 +53,8 @@ ./SQL/SQLite/13/select_messages.sql ./SQL/SQLite/13/select_messagesAll.sql ./SQL/SQLite/13/select_messagesAllNew.sql - ./SQL/SQLite/13/select_messagesNew.sql + ./SQL/SQLite/13/select_messagesNewerThan.sql + ./SQL/SQLite/13/select_messagesNewestK.sql ./SQL/SQLite/13/select_networkExists.sql ./SQL/SQLite/13/select_networks_for_user.sql ./SQL/SQLite/13/select_nicks.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index cbcacf71..3c58fa3b 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -901,15 +901,19 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId return messagelist; QSqlQuery query(logDb()); - if(last == -1) { - query.prepare(queryString("select_messagesNew")); + + if(last == -1 && first == -1) { + query.prepare(queryString("select_messagesNewestK")); + } else if(last == -1) { + query.prepare(queryString("select_messagesNewerThan")); + query.bindValue(":firstmsg", first.toInt()); } else { query.prepare(queryString("select_messages")); query.bindValue(":lastmsg", last.toInt()); + query.bindValue(":firstmsg", first.toInt()); } query.bindValue(":bufferid", bufferId.toInt()); - query.bindValue(":firstmsg", first.toInt()); query.bindValue(":limit", limit); safeExec(query); -- 2.20.1