Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Il controllo del valore della chiave primaria prima dell'inserimento è più rapido rispetto all'utilizzo di try-catch?

Su SQL 2008, puoi semplicemente usare MERGE, molto più semplice di entrambi i tuoi approcci.

Inoltre, non sono con te su "NON voglio usare le transazioni per motivi di prestazioni" - ogni comando DML che esegui fa comunque parte di alcune transazioni, quindi ci sono transazioni anche se non le apri in modo esplicito. Se riscontri problemi di prestazioni, puoi pubblicare maggiori dettagli in modo da ricevere maggiore assistenza con le prestazioni.

Modifica:se hai bisogno di inserimenti molto veloci, non inserire una riga alla volta. Aggiungi insiemi di righe e usa MERGE:il vantaggio che otterrai dall'inserimento di batch di righe alla volta dovrebbe superare di gran lunga qualsiasi piccolo miglioramento che otterrai dall'ottimizzazione della velocità di aggiunta di una riga.

Ad ogni modo, il ragionamento teorico su tutto ciò che riguarda i database di solito non è abbastanza buono. Hai davvero bisogno di benchmark per determinare cosa è più veloce. Ciò che chiami "interrogazione inutilmente per una linea esistente" potrebbe essere del tutto trascurabile e non sai se è così finché non lo avrai misurato in condizioni realistiche.