Lourdeurs d'exécution des mises à jour et suppressions multiples
Les mises à jour et les suppressions multiples d'enregistrements, effectuées à partir de la fenêtre "Requêteur" ne sont pas optimisées pour une exécution optimale. En effet, tout se comporte comme si une requête (UPDATE ou DELETE) était exécutée autant de fois qu'il y a d'enregistrements sélectionnés avec, à chaque exécution, un rafraîchissement des couches de la carte et de la liste du requêteur (cf. copie d'écran ci-après).
Par exemple, dans le cas d'une requête de suppression, une commande DELETE est exécutée pour chaque enregistrement sélectionné dans la liste :
DELETE FROM table WHERE oid = oid_1
rafraîchissement carte
rafraîchissement liste
DELETE FROM table WHERE oid = oid_2
rafraîchissement carte
rafraîchissement liste
DELETE FROM table WHERE oid = oid_3
rafraîchissement carte
rafraîchissement liste
DELETE FROM table WHERE oid = oid_4
rafraîchissement carte
rafraîchissement liste
DELETE FROM table WHERE oid = oid_5
rafraîchissement carte
rafraîchissement liste
Alors qu'il serait plus judicieux d'exécuter l'unique commande suivante :
DELETE FROM table WHERE oid = oid_1 OR oid = oid_2 OR oid = oid_3 OR oid = oid_4 OR oid = oid_5 ;
rafraîchissement carte
rafraîchissement liste
Pour une mise à jour multiple, cela donne :
UPDATE table SET .... WHERE oid = oid_1 OR oid = oid_2 OR oid = oid_3 OR oid = oid_4 OR oid = oid_5 ;
rafraîchissement carte
rafraîchissement liste
Du coup, lors de la mise à jour ou de la suppression d'une grande quantité d'enregistrements, l'application se bloque de manière extrêmement prolongée.