Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [MySql] Indici

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272

    [MySql] Indici

    Perdonerete spero la banalità della domanda...
    Uso da qualche mese php e mysql e capisco perfettamente che un indice è un elenco di valori che indicano al database dove si trova la riga che contiene ciò che cerchiamo, ho capito pure un indice rallenta le operazioni di inserimento/modifica dei dati per velocizzarne la ricerca, però riflettendo un po' ho bisogno di un paio di chiarimenti-conferme:

    Ma le differenze tra PRIMARY KEY e UNIQUE KEY, a parte la possibilità di definire la prima come Auto increment, quali sono? Sono chiavi uniche entrambe o no? Quando usare l'uno o l'altro?

    Inoltre per scegliere come definire gli indici di una tabella credo basti vedere i campi che ricorrono dopo WHERE nelle SELECT, giusto? In "SELECT campo1 WHERE campo2=valore" campo2 deve essere indice?

    Mille grazie

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220

    Re: [MySql] Indici

    Non sono un genio dell'SQL ma provo a darti qualche chiarimento.

    Originariamente inviato da usecram
    Ma le differenze tra PRIMARY KEY e UNIQUE KEY, a parte la possibilità di definire la prima come Auto increment, quali sono? Sono chiavi uniche entrambe o no? Quando usare l'uno o l'altro?
    Beh se una chiave è auto_increment, difficilmente avrai duplicazioni dell'indice (a meno che non ci si mette a cambiarli "manualmente"). Di conseguenza non credo che un'auto_increment sia per forza unique.

    Originariamente inviato da usecram
    Inoltre per scegliere come definire gli indici di una tabella credo basti vedere i campi che ricorrono dopo WHERE nelle SELECT, giusto? In "SELECT campo1 WHERE campo2=valore" campo2 deve essere indice?
    Con WHERE puoi usare quelunque colonna, anche non indice.


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    Forse non mi sono spiegato benissimo io chiedevo:

    1) Quando si adopera PRIMARY e quando UNIQUE dal momento che mi sfuggono le differenze (a parte il fatto che le PRIMARY si possono definire come Auto Increment)

    2) Ben sapendo che dopo WHERE posso usare qualunque colonna mi chiedevo se non convenisse, nella scelta degli indici, vedere quali colonne fossero più ricorrenti dopo WHERE e definire gli indici di conseguenza.

    Comunque grazie per la risposta.

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Ecco..non avevo capito bene

    Originariamente inviato da usecram
    1) Quando si adopera PRIMARY e quando UNIQUE dal momento che mi sfuggono le differenze (a parte il fatto che le PRIMARY si possono definire come Auto Increment)
    Come te, anch'io conosco solo quella differenza, quindi mi accodo per aspettare risposte dai guru di MySQL. Anche se ho come il sospetto che le primary siano meglio indicizzate...mah...

    Originariamente inviato da usecram
    2) Ben sapendo che dopo WHERE posso usare qualunque colonna mi chiedevo se non convenisse, nella scelta degli indici, vedere quali colonne fossero più ricorrenti dopo WHERE e definire gli indici di conseguenza.
    Beh certamente. Definire gli indici serve per facilitare poi la ricerca. Se indicizzi le colonne di cui ti servirai di più per le ricerce, sei avvantaggiato.


  5. #5
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732

    Re: [MySql] Indici

    Originariamente inviato da usecram
    ...
    Inoltre per scegliere come definire gli indici di una tabella credo basti vedere i campi che ricorrono dopo WHERE nelle SELECT, giusto? In "SELECT campo1 WHERE campo2=valore" campo2 deve essere indice?
    ...
    Mille grazie
    Stai leggendo "MySQL 4" della Apogeo?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272

    Re: Re: [MySql] Indici

    Originariamente inviato da Sgurbat
    Stai leggendo "MySQL 4" della Apogeo?
    No

  7. #7
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    No niente tranquillo, lo chiedevo solo perchè in quel libero viene spiegato come individuare i campi papabili di indicizzazione guardando dopo la clausola WHERE.


  8. #8
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Un campo PRIMARY aiuta nella ricerca e puo' essere auto increment come hai detto tu pero' possono esserci piu' record con lo stesso valore.

    Un campo unique invece forza il campo ad essere unico, mysql controlla che non ci sia un altro record con lo stesso valore e se c'e' non esegue la query.


    Dopo WHERE ci puo essere qualsiasi campo presente nella tabella e non solo gli indici

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    PRIMARY è assolutamente una chiave unica non possono esserci più record con lo stesso valore.

    2) Ben sapendo che dopo WHERE posso usare qualunque colonna mi chiedevo se non convenisse...

  10. #10
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Cavolo hai ragione!

    Allora la differenza e' che con unique puoi settare come unica anche una coppa di valori.

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.