Domanda

C'è un motivo per usare una di queste istruzioni UPDATE sopra l'altro per quanto riguarda le prestazioni?

 UPDATE myTable
 SET    fieldx = 1
 FROM   myTable AS mt
      , myView AS mv
 WHERE  mt.id = mv.id


 UPDATE myTable
 SET    fieldx = 1
 WHERE  id IN ( SELECT id
                     FROM   myView )
È stato utile?

Soluzione

Essi probabilmente escono con lo stesso piano di esecuzione, significa che non c'è alcuna differenza. Per confermare, basta provare ciascuno in SSMS con l'opzione "Includi piano di esecuzione" acceso.

In realtà, quello che vorrei andare per è:

UPDATE mt
SET mt.fieldx = 1
FROM myTable mt
    JOIN myView mv ON mt.ID = mv.ID

preferisco di gran lunga questa sintassi. Però, anche uscirà con lo stesso piano di esecuzione.

A dimostrazione di ciò, ho fatto un test con ogni variante dell'istruzione UPDATE. Come l'esecuzione in programma sotto esposizione, sono venuti tutti fuori lo stesso - tutti svolgono la stessa:
alt text http://img707.imageshack.us/img707/7801/60422461.png


alt text http://img683.imageshack.us/img683/7874/41210682.png


alt text http://img708.imageshack.us/img708/5020/20506532.png

Altri suggerimenti

Anche se questo non parla di prestazioni, mi piace il primo esempio meglio così che ho potuto veterinario più facile senza modificare la struttura di base del codice. Avviso dove e quello che ho messo nei commenti:

UPDATE myTable 
SET    fieldx = 1
--SELECT *
FROM   myTable AS mt 
      , myView AS mv 
WHERE  mt.id = mv.id
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top