Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    mysql query di insert lenta

    Ciao a tutti,

    brevemente io ho due tabelle VOLONTARI E UTENTI e ho bisogno di inserire i volontari nella tabella utenti verificando che non ci siano già.
    La query che ho creato impiega 130 secondi per essere eseguita e inserisce 0 righe(la tabella volontari presenta dei record che non ci sono in utenti)

    codice:
    INSERT INTO utenti
    SELECT '', v.Nome, v.`Cognome`,'',
     v.`Indirizzo`,'', v.`CAP`, v.`Citta`, v.Provincia,
    '0', '0000-00-00',v.Codice_fiscale,'',v.Email,
    '0',v.Telefono,v.Cellulare,'0',
    v.Alias,v.Password,'no','6','attivo','','0000-00-00','0000-00-00','','','',
    'si','0','si','','','','italiano','','','','' 
    FROM volontari AS v  
    WHERE v.Email NOT IN(
                SELECT u.email FROM davide_utenti AS u
                 )
    faccio il controllo sull'email perchè nel form che popola le tabelle vi sono dei controlli per i quali le e-mail non possono essere doppie..

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Immagino che il problema non sia nell'insert ma nella select, in particolare nella clausola not in. Convertila in un left join.

  3. #3

  4. #4
    l'ho modificata così
    codice:
    INSERT INTO utenti 
    SELECT '', v.Nome, v.`Cognome`,'', v.`Indirizzo`,'', v.`CAP`, v.`Citta`,
     v.Provincia,'0','
    0000-00-00',v.Codice_fiscale,'',v.Email,'0',v.Telefono,v.Cellulare,'0',
    v.Alias,v.Password,'no','6','attivo','','0000-00-00','0000-00-00','','','','si',
    '0','si','','','','italiano','','','',''
     FROM volontari as v LEFT JOIN utenti as u ON v.Email=u.email
    WHERE u.email IS NULL
    così facendo mi restituisce un errore

    codice:
    #1062 - Valore duplicato '' per la chiave 'codicefiscale'
    e mi inserisce una riga sola

  5. #5
    #1062 - Valore duplicato '' per la chiave 'codicefiscale'

    mi sembra molto chiaro il motivo dell'errore...

  6. #6
    si mi sono accorta che ci sono due righe in cui il codice fiscale è vuoto per cui le vede come uguali e si blocca li

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Un campo che ammette valori unici consente comunque l'inserimento di infiniti valori NULL.

    Prima di sbattere la testa sulla query di inserimento hai verificato se la select così modificata è più rapida?

  8. #8
    Originariamente inviato da nicola75ss
    Un campo che ammette valori unici consente comunque l'inserimento di infiniti valori NULL.
    corretto, ma forse il campo che viene salvato non è NULL ma vuoto

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da optime
    corretto, ma forse il campo che viene salvato non è NULL ma vuoto
    Il suggerimento implicito era quello di convertire i campi vuoti in null

    select if(campo='',null,campo) ....


  10. #10
    si i campi sono proprio vuoti

    non ho capito come fare per convertire i campi vuoti in null

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.