Merge pull request #9078 from smatvienko-tb/feature/notifications-unread-sql-index
[3.5.2] Notification unread counter query speedup
This commit is contained in:
commit
55c338d45d
@ -756,6 +756,10 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService
|
|||||||
conn.createStatement().execute("CREATE INDEX IF NOT EXISTS idx_rule_node_type_configuration_version ON rule_node(type, configuration_version);");
|
conn.createStatement().execute("CREATE INDEX IF NOT EXISTS idx_rule_node_type_configuration_version ON rule_node(type, configuration_version);");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
conn.createStatement().execute("CREATE INDEX IF NOT EXISTS idx_notification_recipient_id_unread ON notification(recipient_id) WHERE status <> 'READ';");
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
|
||||||
conn.createStatement().execute("UPDATE tb_schema_settings SET schema_version = 3005002;");
|
conn.createStatement().execute("UPDATE tb_schema_settings SET schema_version = 3005002;");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,6 +81,9 @@ public class JpaNotificationDao extends JpaAbstractDao<NotificationEntity, Notif
|
|||||||
return notificationRepository.updateStatusByIdAndRecipientId(notificationId.getId(), recipientId.getId(), status) != 0;
|
return notificationRepository.updateStatusByIdAndRecipientId(notificationId.getId(), recipientId.getId(), status) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For this hot method, the partial index `idx_notification_recipient_id_unread` was introduced since 3.5.2
|
||||||
|
* */
|
||||||
@Override
|
@Override
|
||||||
public int countUnreadByRecipientId(TenantId tenantId, UserId recipientId) {
|
public int countUnreadByRecipientId(TenantId tenantId, UserId recipientId) {
|
||||||
return notificationRepository.countByRecipientIdAndStatusNot(recipientId.getId(), NotificationStatus.READ);
|
return notificationRepository.countByRecipientIdAndStatusNot(recipientId.getId(), NotificationStatus.READ);
|
||||||
|
|||||||
@ -113,3 +113,5 @@ CREATE INDEX IF NOT EXISTS idx_notification_request_status ON notification_reque
|
|||||||
CREATE INDEX IF NOT EXISTS idx_notification_id ON notification(id);
|
CREATE INDEX IF NOT EXISTS idx_notification_id ON notification(id);
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_notification_recipient_id_created_time ON notification(recipient_id, created_time DESC);
|
CREATE INDEX IF NOT EXISTS idx_notification_recipient_id_created_time ON notification(recipient_id, created_time DESC);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_notification_recipient_id_unread ON notification(recipient_id) WHERE status <> 'READ';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user