Quando usare istruzioni basate su set e operazioni basate su righe

Completato

Le istruzioni basate su set vengono usate per aggiornare, inserire o eliminare più record di dati in una tabella.

Le operazioni basate su riga o non basate su set, vengono usate per aggiornare, inserire o eliminare un singolo record da una tabella.

L'utilizzo di query basate su set può aumentare notevolmente le prestazioni riducendo il numero di chiamate effettuate al database.

Un'operazione basata su riga richiede una chiamata al database per ogni record che deve essere manipolato, mentre un'istruzione basata su set chiama il database solo una volta.

Ad esempio, se è necessario aggiornare 100 record in una tabella, un'operazione basata su riga chiamerà il metodo update di aggiornamento e chiamerà il database 100 volte per aggiornare tutti i record. Un'istruzione basata su set chiamerebbe il metodo update_recordset una volta e chiamerebbe il database una volta per aggiornare tutti i record.

Tre esempi di istruzioni basate su set che possono essere usate sono:

  • Update_recordset: usato per aggiornare più record contemporaneamente.
  • Delete_from: usato per eliminare più record contemporaneamente.
  • Insert_recordset: usato per copiare più record da una o più tabelle in un'altra tabella.

L'istruzione update_recordset può aggiornare più campi su una tabella. È inoltre possibile specificare una clausola where per determinare quali record vengono aggiornati. Di seguito è riportato un esempio di update_recordset dove si dichiara la tabella e si chiama update_recordset per aggiornare i campi PaymMode e Valuta del cliente solo per i clienti con il campo CustGroup uguale a "USA". Tenere presente che se il metodo di aggiornamento viene sostituito, update_recordset chiama un metodo di aggiornamento alla volta anziché tutti in una volta.

CustTable custTable;
Update_recordset custTable
Setting
	 PaymMode = 'Check',
	 Currency = 'USD'
Where custTable.CustGroup == 'US';

Il metodo delete_from è simile al metodo update_recordset. È possibile eliminare più record contemporaneamente da una tabella e usare una clausola where per determinare quali record eliminare. Nell'esempio seguente, la tabella viene dichiarata e quindi viene chiamato il metododelete_from per eliminare tutti i record in cui il campo clienteCustGroup è uguale a "USA".

CustTable custTable;
Delete_from custTable
	Where custTable.CustGroup == 'US';

Insert_recordsetconsente di inserire più record da una tabella in un'altra tabella. È possibile utilizzare una clausola where per determinare quali record inserire e utilizzare le variabili per l'inserimento. Nell'esempio seguente, vengono dichiarate la tabella in cui verrà inserita e la tabella da cui si stanno estraendo i dati. Il metodo insert_recordset viene quindi chiamato per inserire i dati nei campi elencati tra parentesi. I campi della tabella di staging vengono quindi chiamati nell'ordine in cui erano elencati tra parentesi. Ora, quei campi verranno inseriti nel campo CustTable in cui il campo CustGroup del cliente approntato è uguale a "USA".

CustTable custTable;
CustCustomerBaseStaging custCustomerBaseStaging;

Insert_recordset custTable (accountNum, custGroup, paymMode, currency)
	Select CustomerAccount, CustomerGroupId, PaymentMethod,SalesCurrencyCode
		From custCustomerBaseStaging
		Where custCustomerBaseStaging.CustGroupID == 'US';