Quali sono i principali vantaggi dell’utilizzo di INDICI in mysql?

So che ho bisogno di avere una chiave primaria set, e per impostare qualsiasi cosa che dovrebbe essere unico come una chiave univoca, ma che cosa è un INDICE e come posso utilizzarli?

Quali sono i vantaggi? Pro & Contro? Ho notato che posso utilizzare o meno, quando dovrei?

  • Riferimento: Wikipedia
  • Markdown mangiato la tua parentesi
InformationsquelleAutor Basic | 2011-04-17



7 Replies
  1. 19

    Risposta breve:

    Indici di velocità fino SELECT‘s e rallentare INSERT‘s.

    Di solito è meglio avere indici, perché la velocità fino select più di rallentare insert.

    Su un UPDATE l’indice può accelerare le cose fino se un campo indicizzato è utilizzato nel WHERE clausola e rallentare le cose se si update uno dei campi indicizzati.

    Come fai a sapere quando utilizzare un indice

    Aggiungere EXPLAIN davanti al vostro SELECT istruzione.

    In questo modo:

    EXPLAIN SELECT * FROM table1 
    WHERE unindexfield1 > unindexedfield2 
    ORDER BY unindexedfield3

    Mostrerà quanto lavoro MySQL avrà a che fare, su ciascuno dei campi non indicizzati.

    Utilizzando che info si può decidere se vale la pena aggiungere gli indici o non.

    Spiegare può dire se è meglio la goccia e l’indice

    EXPLAIN SELECT * FROM table1 
    WHERE indexedfield1 > indexedfield2 
    ORDER BY indexedfield3

    Se molto poco delle righe selezionate, o MySQL deciso di ignorare l’indice (non che di volta in volta) allora si potrebbe anche eliminare l’indice, perché è rallentare il inserts, ma non accelerare il vostro select‘s.

    Poi di nuovo potrebbe anche essere che la tua istruzione select non è abbastanza intelligente.

    (Scusate per la complessità della risposta, stavo cercando di mantenere le cose semplici, ma non è riuscito).

    Link:

    MySQL indici – quali sono le migliori pratiche?

    • come posso utilizzare questa query?:SPIEGARE SELECT * FROM tabella1 WHERE indexedfield1 > indexedfield2 ORDINE indexedfield3; voglio dire, so cosa mettere sulla indexedfield1 ma che dire di quelle indexedfield2 e indexedfield3?
    • perché hai ripetere due volte la Explain .... frase?
  2. 9

    Pro:

    Più veloce per la ricerca di risultati. Questo è tutto, riducendo il numero di Disco di IO. Invece di eseguire una scansione dell’intero tavolo per i risultati, è possibile ridurre il numero di disco di IO(pagina recupera) utilizzando strutture di indice come B-Alberi o Indici Hash di accedere ai vostri dati più veloce.

    Contro:

    • Più lento scrive(potenzialmente). Non solo è necessario scrivere i dati per le tabelle, ma si hanno anche per scrivere i vostri indici. Questo può causare il sistema per ristrutturare la struttura dell’indice(Indice Hash, B-alberi, ecc), che può essere molto dispendioso.

    • Occupa più spazio su disco, naturalmente. Memorizzare più dati.

  3. 3

    Il modo più semplice per pensare un indice è quello di pensare di un dizionario. Non ha parole e non ha definizioni corrispondenti a quelle parole. Il dizionario ha un indice sulla “parola”, perché quando si va a un dizionario che si desidera cercare una parola in fretta, per poi arrivare alla sua definizione. Un dizionario di solito contiene solo un indice – un indice per parola.

    Un database è analoga. Quando si hanno un sacco di dati nel database, è necessario un certo modo che si desidera uscire. Supponiamo di avere una tabella Utente e spesso un utente con il Nome di colonna. Poiché questa è un’operazione che si fa spesso nella vostra applicazione, si dovrebbe considerare l’utilizzo di un indice sulla colonna. Che andranno a creare una struttura del database che è ordinato, se si vuole, in base alla colonna, in modo che la ricerca di qualcosa da primo nome è come cercare una parola in un dizionario. Se non si dispone di questo indice potrebbe essere necessario esaminare TUTTE le righe prima di determinare quelli che hanno un Nome specifico. Aggiungendo un indice, che hanno fatto di questo veloce.

    Allora perché non mettere un indice su tutte le colonne e li fanno tutti i fast? Come per ogni cosa, c’è un trade off. Ogni volta che si inserisce una riga nella tabella Utente, il database sarà necessario eseguire la sua magia e ordinare tutto ciò che è sulla colonna indicizzata. Questo può essere costoso.

    • Quindi, se la mia tabella è molto grande, con molte righe, è meglio che non li uso e basta usare una CHIAVE PRIMARIA, la maggior parte dei miei DOVE solo clausole di usare la mia CHIAVE PRIMARIA in ogni caso. Grazie per la tua risposta.
    • Non necessariamente, Se si dispone di molte più righe, e si ha REALMENTE bisogno per ottenere il vostro informazioni da qualcosa che non sia la chiave primaria, quindi si dovrebbe davvero mettere un indice di colonna. Se le persone stanno per essere ottenere informazioni da colonna costantemente, quindi ha bisogno di essere veloce. È solo che non voglio aggiungere indici a casaccio perché non ci sono conseguenze speranza che aiuta!
  4. 1

    Non hanno avere una chiave primaria. Indici (di qualsiasi tipo) sono utilizzati per velocizzare le query e, almeno con il motore InnoDB, rispettare i vincoli di chiave esterna. Se si utilizza un unico o normale (non in esclusiva), un indice che dipende se si desidera consentire i valori duplicati nella chiave.

  5. 0

    Un indice permette di MySQL per trovare dati più veloce. Il loro utilizzo colonne da utilizzare in WHERE clausole. Per esempio, se si dispone di una colonna denominata score, e vuoi trovare tutto quello con cui score > 5, per impostazione predefinita, questo significa MySQL necessario per eseguire la scansione attraverso l’INTERA tabella per trovare quei punteggi. Tuttavia, se si utilizza un indice b-tree, la ricerca di quelle che soddisfano la condizione accadrà MOLTO più veloce.

    Gli indici hanno un prezzo: il disco e lo spazio di memoria. Se si tratta di un grande tavolo, il tuo indice di crescere abbastanza grande.

  6. 0

    Penso in questo modo: quali sono i principali vantaggi di avere un indice di un libro? È la stessa cosa. È leggermente più grande libro, ma siete in grado di cercare rapidamente le cose. Quando si crea un indice su una colonna, stai dicendo che si desidera essere in grado di fare riferimento in una clausola where per cercare rapidamente.

Lascia un commento