Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: Query molto lenta

  1. #11
    il fatto è che poi devi interpretare che "0" non è zero ma "dato assente". NULL è stato inventato apposta per dire che quel dato non ce l'hai proprio
    ARTRIPE

  2. #12
    Quote Originariamente inviata da optime Visualizza il messaggio
    il fatto è che poi devi interpretare che "0" non è zero ma "dato assente". NULL è stato inventato apposta per dire che quel dato non ce l'hai proprio
    Assolutamente sì, in certe condizioni NULL va bene ma, secondo me ovviamente, meglio tenere una coerenza col tipo di dato ed evitare i NULL, anche perchè comunque un NULL è diverso da uno ZERO o da una stringa vuota e, trattandosi generalmente di dati che vanno valorizzati in qualche modo nella tabella, se poi devi aggregare o fare calcoli ecc ti trovi, lato codice, a dover trasformare il NULL in qualcosa che ha senso (stringa vuota, 0, ecc)....
    Una stringa NULL come la tratti? Come "vuota"? Allora tanto vale metterla vuota....
    Un numero NULL cos'è? Niente? E se devi sommare NULL + 98 che cosa vuoi ottenere....98? Allora usa ZERO...
    Su una Data (o timestamp ecc) usi ZERO e lo tratti come tale...se è zero una data difficilmente sarà proprio esattamente le 00:00:00 del 01/01/1970 quindi lo metti come 0 e, lato codice,
    codice:
    if data != 0 fai qualcosa else qualcosaltro
    :-)

  3. #13
    te l'ho già detto: NULL ha un significato preciso in SQL: quel dato NON è disponibile. Il linguaggio SQL offre poi tutte le istruzioni per un trattamento efficace dei NULL, basta usarli con accortezza. Se invece usi (ad esempio) "0" per dire che quel dato non ce l'hai, come fai a distinguere un dato assente da un dato che vale esattamente zero? Poi ognuno ovviamente può decidere di usare delle scorciatoie
    ARTRIPE

  4. #14
    Quote Originariamente inviata da optime Visualizza il messaggio
    te l'ho già detto: NULL ha un significato preciso in SQL: quel dato NON è disponibile. Il linguaggio SQL offre poi tutte le istruzioni per un trattamento efficace dei NULL, basta usarli con accortezza. Se invece usi (ad esempio) "0" per dire che quel dato non ce l'hai, come fai a distinguere un dato assente da un dato che vale esattamente zero? Poi ognuno ovviamente può decidere di usare delle scorciatoie
    Eh infatti, il "problema" è proprio quello....0 come data ha senso? Dipende....se sai che NON avrai mai una data che vale esattamente 01/01/1970 00:00:00 allora ha senso, altrimenti no, è ovvio, così come una stringa vuota come testo può essere equivalente ad avere un NULL.
    Tutto dipende, ovvio, e il mio non è un mantra da seguire per forza, è solamente un consiglio basato su alcune condizioni :-)


    C'è da dire che, se usi query parametriche costruite in base ai dati in ingresso (es banale in php: SELECT * FROM my_table WHERE phone = {$1}), nel momento in cui devi gestire/cercare chi ha phone NULL, non puoi farlo perchè phone = NULL ti ritornerà sempre zero righe: dovrai quindi gestire lato codice due query diverse
    codice:
    SELECT * FROM my_table WHERE phone IS NULL;
    SELECT * FROM my_table WHERE phone = '';

    Inoltre, a certe condizioni, se inserisci NULL in un TimeStamp ti inserisce la data corrente.
    Aggiungo, NULL nei confronti matematici non puoi usarlo, sempre perchè nelle espressioni NULL ritorna sempre NULL (è sempre falso).

    COMUNQUE, usare NULL ha senso ovviamente altrimenti non esisterebbe ma, secondo esperienza, spesso crea più problemi che altro e, personalmente, tendo a evitarlo più possibile.

  5. #15
    credo che abbiamo esperienze diverse
    ARTRIPE

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 © 2022 vBulletin Solutions, Inc. All rights reserved.