diff --git a/NEWS.md b/NEWS.md
index 1cc6e4df4..6ef4de600 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,6 @@
+## 2024-xx-xx 5.10.0
+* [MODSOURCE-816](https://folio-org.atlassian.net/browse/MODSOURCE-816) [RRT] Optimize execution plan for streaming SQL
+
## 2024-10-28 5.9.0
* [MODSOURCE-767](https://folio-org.atlassian.net/browse/MODSOURCE-767) Single record overlay creates duplicate OCLC#/035
* [MODSOURCE-756](https://issues.folio.org/browse/MODSOURCE-756) After setting an instance as marked for deletion it is no longer editable in quickmarc
diff --git a/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java b/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java
index bbd104f36..d9ecf8f59 100644
--- a/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java
+++ b/mod-source-record-storage-server/src/main/java/org/folio/dao/util/RecordDaoUtil.java
@@ -632,10 +632,8 @@ public static Condition filterRecordByUpdatedDateRange(Date updatedAfter, Date u
public static Condition filterRecordByDeleted(Boolean deleted) {
Condition condition = filterRecordByState(RecordState.ACTUAL.name());
if (deleted == null) {
- condition = condition.or(filterRecordByState(RecordState.DELETED.name()))
- .or(filterRecordByState(RecordState.ACTUAL.name()));
- }
- if (Boolean.TRUE.equals(deleted)) {
+ condition = RECORDS_LB.STATE.in(RecordState.ACTUAL, RecordState.DELETED);
+ } else if (Boolean.TRUE.equals(deleted)) {
condition = condition.or(filterRecordByState(RecordState.DELETED.name()))
.or(filterRecordByState(RecordState.ACTUAL.name()).and(filterRecordByLeaderRecordStatus(DELETED_LEADER_RECORD_STATUS)));
}
diff --git a/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml
index b498662ef..6ed80bf9c 100644
--- a/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml
+++ b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/changelog.xml
@@ -71,4 +71,5 @@
+
diff --git a/mod-source-record-storage-server/src/main/resources/liquibase/tenant/scripts/v-5.10.0/2024-11-22--16-00-create-indexes-on-marc-indexers-005.xml b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/scripts/v-5.10.0/2024-11-22--16-00-create-indexes-on-marc-indexers-005.xml
new file mode 100644
index 000000000..21d5f4374
--- /dev/null
+++ b/mod-source-record-storage-server/src/main/resources/liquibase/tenant/scripts/v-5.10.0/2024-11-22--16-00-create-indexes-on-marc-indexers-005.xml
@@ -0,0 +1,37 @@
+
+
+
+
+ CREATE OR REPLACE FUNCTION ${database.defaultSchemaName}.immutable_to_date(input_text TEXT) RETURNS date AS $$
+ DECLARE
+ output_date DATE;
+ BEGIN
+ IF input_text ~ '^[0-9]+(\.[0-9]+)?$' THEN
+ RETURN to_timestamp(input_text::DOUBLE PRECISION / 1000)::date;
+ ELSE
+ BEGIN
+ output_date := to_date(substring(input_text, 1, 8), 'yyyymmdd');
+ EXCEPTION WHEN others THEN
+ RETURN NULL;
+ END;
+ RETURN output_date;
+ END IF;
+ END;
+ $$ LANGUAGE plpgsql IMMUTABLE;
+
+
+
+
+
+ CREATE INDEX idx_records_lb_suppress_discovery ON ${database.defaultSchemaName}.records_lb (suppress_discovery);
+ CREATE INDEX idx_marc_records_tracking_marc_id_version ON ${database.defaultSchemaName}.marc_records_tracking (marc_id, version);
+ CREATE INDEX idx_marc_indexers_005_marc_id ON ${database.defaultSchemaName}.marc_indexers_005 (marc_id);
+ CREATE INDEX idx_marc_indexers_005_value_date ON ${database.defaultSchemaName}.marc_indexers_005 (${database.defaultSchemaName}.immutable_to_date(value));
+
+
+
+