- FINDFIRST
- FINDLAST
- FINDSET([ForUpdate][, UpdateKey])
introdotte per sostituire la funzione FIND([Which]). Il FIND presenta una serie di svantaggi come :
- l'utilizzo di cursori dinamici per il recupero di dati
- restituisce tutto il recordset dei dati della tabella interessata, anche se a noi interessa solo un record. (in questo modo proprio per aver utilizzato i cursori creati e deallocati si ha uno spreco di risorse come occupazione di memoria,CPU,TempDB).
- se non dichiarato il find non capisce se deve recuperare i dati i modalità lock o readuncommited.
il FINDFIRST ed il FINDLAST non utilizzano i cursori. Il FINDSET permette di recuperare da SQL solo il numero di record dichiarato nel recordset del DB.
NOTA: il RecordSEt di default a partire dalla versione NAV 6.0 è stato impostato a 50 mentre nelle precedenti era a 500. Bisogna arrivare ad un compromesso sul numero di record da restituire ad un repeat..until. Si rischia di fa ripetere troppe volte la query di recupero dei dati e l'allocazione di memoria. Esempio: supponiamo di effettuare il
rec.findset(false,false) repeat.. until se la tabella rec. restituisce circa 1000 record un recordset impostato a 50 deve effettuare circa 20 chiamate al DB , allocare e deallocare il cursore ed interessare non da poco l'NDBCS.
L'ISEMPTY la funzione piu veloce del west! indica con un valore booleano di ritorno se la tabella è piena o è vuota in base hai filtri indicati. Non ha bisogno di settare la chiave per filtrarsi. Utilizza le statistiche delle chiavi della tabella. Esempio:
- SELECT TOP 1 NULL FROM "CRONUS$G/L Entry" WITH (READUNCOMMITTED) WHERE ("Posting Date"= '2010-01-01')
Nessun commento:
Posta un commento