diff --git a/code/services-core/index-service/src/main/java/nu/marginalia/index/svc/IndexQueryService.java b/code/services-core/index-service/src/main/java/nu/marginalia/index/svc/IndexQueryService.java
index fee480bc..8b42bbd2 100644
--- a/code/services-core/index-service/src/main/java/nu/marginalia/index/svc/IndexQueryService.java
+++ b/code/services-core/index-service/src/main/java/nu/marginalia/index/svc/IndexQueryService.java
@@ -159,8 +159,11 @@ public class IndexQueryService {
*
* Then the results are combined.
* */
+ private final ThreadLocal resultsArrayListPool = ThreadLocal.withInitial(TLongArrayList::new);
private TLongList evaluateSubqueries(SearchParameters params) {
- final TLongArrayList results = new TLongArrayList(params.fetchSize);
+ final TLongArrayList results = resultsArrayListPool.get();
+ results.resetQuick();
+ results.ensureCapacity(params.fetchSize);
// These queries are various term combinations
for (var subquery : params.subqueries) {