changeset 7149:5c5392a01134

optimized single resources FindRequest
author Alain Mazy <am@orthanc.team>
date Wed, 16 Sep 2026 14:54:38 +0200
parents 7021c0ff2a14
children d0627441796a
files OrthancServer/Sources/Search/ISqlLookupFormatter.cpp
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancServer/Sources/Search/ISqlLookupFormatter.cpp	Tue Sep 15 16:19:35 2026 +0200
+++ b/OrthancServer/Sources/Search/ISqlLookupFormatter.cpp	Wed Sep 16 14:54:38 2026 +0200
@@ -806,7 +806,14 @@
     }
     else
     {
-      ordering = "ROW_NUMBER() OVER (ORDER BY " + strQueryLevel + ".publicId) AS rowNumber";  // we need a default ordering in order to make default queries repeatable when using since&limit
+      if (request.GetOrthancIdentifiers().IsDefined() && request.GetOrthancIdentifiers().DetectLevel() == queryLevel)
+      { // this is a single resource, no need for ordering (ordering may prevents a lot of optimizations from the query planner)
+        ordering = "0 AS rowNumber";
+      }
+      else
+      {
+        ordering = "ROW_NUMBER() OVER (ORDER BY " + strQueryLevel + ".publicId) AS rowNumber";  // we need a default ordering in order to make default queries repeatable when using since&limit
+      }
     }
 
     sql = ("SELECT " +