Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    velocità esecuzione query

    ciao...
    una domanda, anche se potrebbe sembrare un po' stupida...
    se io ho una tabella persona(id,nome)
    una query viene eseguita più velocemente se faccio
    codice:
    select * from persona where id='12345';
    
    //oppure
    
    select * from persona where nome='nome';
    ?
    grazie
    ciao
    stex1984

  2. #2
    ho testato e mi rispondo da solo...
    è più veloce
    codice:
    select * from persona where id='12345';
    stex1984

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Se si tratta di ricerche basate su campi alfanumerici, cioè contenenti del testo, sono senz'altro più lente di una ricerca su valori numerici interi.

    Nel tuo caso, visti gli apici, mi pare che si tratti sempre e comunque di una stringa, quindi in tal caso le velocità sono equiparabili.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Se si tratta di ricerche basate su campi alfanumerici, cioè contenenti del testo, sono senz'altro più lente di una ricerca su valori numerici interi.

    Nel tuo caso, visti gli apici, mi pare che si tratti sempre e comunque di una stringa, quindi in tal caso le velocità sono equiparabili.
    Strano però...
    ora la mia query non era semplice come quella, ma erano in join 3 tabelle, ma il concetto era quello...
    forse mi sono dimenticato di dire che id è chiave primaria e contiene solo numeri, mentre nome è solo un campo.
    entrambi sono varchar, cioè li tratto da stringhe.
    ho fatto un test con mysql query browser ed ho notato questo...
    se faccio la ricerca attraverso il nome ci impiega tanto tempo da costringermi a fermare la query, se la faccio attraverso l'id impiega nemmeno un secondo che mi da i risultati.
    mah...
    grazie cmq della risposta...
    stex1984

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da stex1984
    forse mi sono dimenticato di dire che id è chiave primaria e contiene solo numeri, mentre nome è solo un campo. entrambi sono varchar, cioè li tratto da stringhe.
    Non vedo perché la chiave primaria, contenendo solo numeri, debba essere un VARCHAR, a meno che tu non debba rallentare appositamente le prestazioni delle tue query.

    Originariamente inviato da stex1984
    se faccio la ricerca attraverso il nome ci impiega tanto tempo da costringermi a fermare la query, se la faccio attraverso l'id impiega nemmeno un secondo che mi da i risultati.
    Per forza: il campo ID è una chiave primaria, pertanto è indicizzato.

    Trasformalo però in un campo numerico, così massimizzi le prestazioni in quanto, oltre all'indice, hai un tipo di dato più facilmente confrontabile e quindi una ricerca più rapida.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    avrei voluto tanto che fosse un campo numerico, ma altri problemi mi hanno costretto a trattarlo come stringa... (in principio era un campo numerico autoincrementante)
    ora non ricordo di preciso quali, perchè la progettazione l'ho fatta ad aprile...
    stex1984

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da stex1984
    avrei voluto tanto che fosse un campo numerico, ma altri problemi mi hanno costretto a trattarlo come stringa... (in principio era un campo numerico autoincrementante)
    ora non ricordo di preciso quali, perchè la progettazione l'ho fatta ad aprile...
    Erano senz'altro problemi risolvibili, o comunque al 99,9% la scelta di adottare un campo testuale è la risposta sbagliata al problema.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.