diff --git a/castor/db/oracleQuery.sql b/castor/db/oracleQuery.sql
index 1001ff6144786198fa3cc8197d8f016f97219097..552322e629a435ea2ed25bbc9685048ed8a93aea 100644
--- a/castor/db/oracleQuery.sql
+++ b/castor/db/oracleQuery.sql
@@ -73,20 +73,20 @@ BEGIN
                   AND (euid = 0 OR SvcClass.id IS NULL OR   -- if euid > 0 check read permissions for srmLs (see bug #69678)
                        checkPermission(SvcClass.name, euid, egid, 35) = 0)   -- OBJ_StageGetRequest
                 UNION ALL
-               SELECT /*+ LEADING(cfidTable DiskCopy DataPool2SvcClass SvcClass DataPool)
-                          USE_NL(cfidTable DiskCopy DataPool2SvcClass SvcClass DataPool) */
+               SELECT /*+ LEADING(cfidTable DiskCopy DataPool2SvcClass SvcClass DataPool DiskServer)
+                          USE_NL(cfidTable DiskCopy DataPool2SvcClass SvcClass DataPool DiskServer)
+                          INDEX_RS_ASC(DiskCopy I_DiskCopy_CastorFile) */
                       DiskCopy.id, DiskCopy.path, DiskCopy.status, DataPool.name AS machine, '' AS mountPoint,
                       SvcClass.name AS svcClass, DiskCopy.castorFile, DiskCopy.nbCopyAccesses, DiskCopy.creationTime, DiskCopy.lastAccessTime,
                       0 AS isOnDrainingHardware
-                 FROM DataPool2SvcClass, DataPool, SvcClass, DiskCopy
+                 FROM DataPool2SvcClass, DataPool, SvcClass, DiskCopy, DiskServer
                 WHERE Diskcopy.castorFile IN (SELECT /*+ CARDINALITY(cfidTable 5) */ * FROM TABLE(cfs) cfidTable)
                   AND Diskcopy.status IN (0, 1, 4, 5, 6, 7, 10, 11) -- search for diskCopies not BEINGDELETED
-                  AND EXISTS (SELECT 1 FROM DiskServer
-                               WHERE DiskServer.dataPool = DiskCopy.dataPool
-                                 AND DiskServer.status IN (dconst.DISKSERVER_PRODUCTION,
-                                                           dconst.DISKSERVER_DRAINING,
-                                                           dconst.DISKSERVER_READONLY)
-                                 AND DiskServer.hwOnline = 1)
+                  AND DiskServer.dataPool = DiskCopy.dataPool
+                  AND DiskServer.status IN (dconst.DISKSERVER_PRODUCTION,
+                                            dconst.DISKSERVER_DRAINING,
+                                            dconst.DISKSERVER_READONLY)
+                  AND DiskServer.hwOnline = 1
                   AND DataPool2SvcClass.parent = Diskcopy.dataPool
                   AND SvcClass.id = DataPool2SvcClass.child
                   AND (euid = 0 OR   -- if euid > 0 check read permissions for srmLs (see bug #69678)
@@ -161,18 +161,20 @@ BEGIN
                   AND nvl(DiskServer.hwOnline, 1) = 1
                   AND DiskPool2SvcClass.parent(+) = FileSystem.diskPool
                 UNION ALL
-               SELECT DiskCopy.id, DiskCopy.path, DiskCopy.status, DataPool.name AS machine, '' AS mountPoint,
+               SELECT /*+ LEADING(cfidTable DiskCopy DataPool2SvcClass DataPool DiskServer)
+                          USE_NL(cfidTable DiskCopy DataPool2SvcClass DataPool DiskServer)
+                          INDEX_RS_ASC(DiskCopy I_DiskCopy_CastorFile) */
+                      DiskCopy.id, DiskCopy.path, DiskCopy.status, DataPool.name AS machine, '' AS mountPoint,
                       DataPool2SvcClass.child AS dcSvcClass, DiskCopy.castorFile, DiskCopy.nbCopyAccesses, DiskCopy.creationTime,
                        DiskCopy.lastAccessTime, 0 AS isOnDrainingHardware
-                 FROM DataPool2SvcClass, DataPool, DiskCopy
+                 FROM DataPool2SvcClass, DataPool, DiskCopy, DiskServer
                 WHERE Diskcopy.castorFile IN (SELECT /*+ CARDINALITY(cfidTable 5) */ * FROM TABLE(cfs) cfidTable)
                   AND DiskCopy.status IN (0, 1, 4, 5, 6, 7, 10, 11)  -- search for diskCopies not GCCANDIDATE or BEINGDELETED
-                  AND EXISTS (SELECT 1 FROM DiskServer
-                               WHERE DiskServer.dataPool = DiskCopy.dataPool
-                                 AND DiskServer.status IN (dconst.DISKSERVER_PRODUCTION,
-                                                           dconst.DISKSERVER_DRAINING,
-                                                           dconst.DISKSERVER_READONLY)
-                                 AND DiskServer.hwOnline = 1)
+                  AND DiskServer.dataPool = DiskCopy.dataPool
+                  AND DiskServer.status IN (dconst.DISKSERVER_PRODUCTION,
+                                            dconst.DISKSERVER_DRAINING,
+                                            dconst.DISKSERVER_READONLY)
+                  AND DiskServer.hwOnline = 1
                   AND DataPool2SvcClass.parent = DiskCopy.dataPool
                   AND DataPool.id = Diskcopy.dataPool) DC
                   -- No extra check on read permissions here, it is not relevant