Вместо множества условий в одном поле вы можете использовать ключевое слово in
:
SELECT doc_id, ref_id FROM doc_ref WHERE doc_id in (1234567, 1234570, 1234572, 1234596, ...)
Это сделает запросы короче, но не уверен, что производительность будет сильно отличаться. Вы должны убедиться, что у вас есть индексы в соответствующих полях, что обычно очень сильно влияет на производительность.
Редактировать
Однако, похоже, причина того, что у вас много значений для сравнения, заключается в том, что вы используете результат одного запроса для создания следующего. Это, конечно, должно быть решено с помощью объединения вместо динамического запроса:
select
doc_text.doc_id, doc_text.language, doc_text.author, doc_text.title,
doc_ref.ref_id, ref_master.location_id, location.location_display_name,
doc_index.doc_id, doc_index.display_heading
from DOC_TEXT
inner join DOC_REF on doc_text.doc_id = doc_ref.doc_id
inner join REF_MASTER on doc_ref.doc_id = ref_master.ref_id
inner join LOCATION on ref_master.location_id = location.location_id
inner join DOC_INDEX on doc_text.doc_id = doc_index.doc_id
where
doc_text.language in ('fr', 'es')