MySQL Aggiornamento: perché mai le righe abbinate cambiamento basato sulla clausola set?

dba.stackexchange https://dba.stackexchange.com/questions/2963

  •  16-10-2019
  •  | 
  •  

Domanda

I ha una query di aggiornamento che unisce attraverso un enorme numero di tabelle che ha aggiornato un campo, ed è abbinato 29k alcuni dispari righe. Esecuzione della stessa query con solo un'aggiunta nella clausola SET aumentato le righe abbinate a 118K alcuni dispari righe. Sembra che questo dovrebbe cambiare solo se la clausola WHERE sono stati modificati.

È stato utile?

Soluzione

Credo di aver capito il ...

MySQL deve contare il numero di righe che verranno aggiornati, non tutti quelli che saranno generati dal join che accade durante l'aggiornamento. La differenza è che se ci sono molti [B] ad uno [A], e molti [C] per una [B], unendo tutti creerebbe n ([C]) righe, ma aggiornamento [B] sarebbe solo conteggio n ( [B]). Aggiunta di un set per [C] rende questo numero n ([B]) + n ([C]).

Dal momento che i campi nella clausola SET sono su tavoli diversi, cambia il numero aggiornato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top