Questa è più una questione di teoria.MySQL UPDATE è più veloce di INSERT INTO?
Se sono in esecuzione 50.000 query che inseriscono nuove righe e 50.000 query che aggiornano quelle righe, quale richiederà meno tempo?
Questa è più una questione di teoria.MySQL UPDATE è più veloce di INSERT INTO?
Se sono in esecuzione 50.000 query che inseriscono nuove righe e 50.000 query che aggiornano quelle righe, quale richiederà meno tempo?
Inserire sarebbe più veloce perché con l'aggiornamento è necessario prima cercare il record che si sta per aggiornare e quindi eseguire l'aggiornamento.
Anche se questo sembra un confronto valido in quanto non si ha mai la possibilità di inserire o aggiornare in quanto i due soddisfano due esigenze completamente diverse.
MODIFICA: Devo aggiungere che questo è con l'assunto che non ci sono trigger di inserimento o altre situazioni che potrebbero causare potenziali colli di bottiglia.
non completamente vero ... si potrebbe avere una tabella con gli orari dell'ultimo accesso. Potresti aggiornare i record o inserirne di nuovi ogni volta che un utente effettua l'accesso. Anche se un tale comportamento dipenderebbe anche dai tempi di accesso, dai tassi di crescita delle tabelle, ecc. –
Non necessariamente - L'aggiornamento potrebbe essere più veloce a causa di un minor numero di pagine a seconda di cosa il cluster e altri indici sono e una miriade di altri fattori. –
Sono d'accordo sul fatto che ci sono fattori che potrebbero contribuire a questo non è il caso. Ma penso che nella maggior parte degli scenari degli utenti quotidiani non lo sia. Ma potrei sbagliarmi. – spinon
Con un inserimento nella stessa tabella, è sempre possibile inserire tutte le righe con una query, il che rende molto più veloce dell'inserimento uno alla volta. Quando si aggiorna, è possibile aggiornare più righe alla volta, ma non è possibile applicarlo a tutte le situazioni di aggiornamento e spesso è necessario eseguire una query di aggiornamento alla volta (quando si aggiorna un ID specifico) - e su un grande tavolo questo è molto lento a dover trovare la riga e quindi aggiornarlo ogni volta. È anche più lento anche se hai indicizzato il tavolo, secondo la mia esperienza.
Insert Operation : Create -> Store
Update Operation : Retrieve -> Modify -> Store
Inserisci operazione più veloce.
Come parte qui, non dimenticare che facendo più inserimenti che aggiornamenti, hai più righe quando arrivi a selezionare, quindi rallenterai l'operazione di lettura.
Quindi la vera domanda diventa: cosa ti interessa di più, un inserto veloce o una lettura veloce. Di nuovo, questo dipende da alcuni fattori - in particolare (e non ancora menzionato) del motore DB, come InnoDB (che ora è standard in PHPMyAdmin per inciso).
Sono d'accordo con tutti gli altri però - c'è troppo da considerare caso per caso e quindi è davvero necessario eseguire i propri test e valutare la situazione da lì in base alle proprie esigenze.
Questo dipende da vari fattori. Le tabelle hanno indici? Aggiornerai tutte le colonne in cui inserire l'inserto o solo un suo sottoinsieme? Inoltre, non riesco a vedere la rilevanza di questa domanda. In caso di dubbio, misura per il tuo caso d'uso con i tuoi dati ... –
Suggerirei che poiché INSERT e UPDATE non fanno la stessa cosa, il migliore da usare sarebbe quello che fa ciò che è necessario, e al diavolo con quanto tempo ci vuole Vedere http://c2.com/cgi/wiki?PrematureOptimization –