Mysql Force Index

Mysql Force Index
Il valore particolare in un campo della tabella può essere cercato rapidamente utilizzando un indice. Se non viene definito alcun indice nella tabella, la ricerca inizierà dal primo record e interromperà la ricerca in cui esiste il valore di ricerca. Se il valore di ricerca non esiste nella tabella, la ricerca si interromperà dopo aver iterato l'ultimo record. È molto tempo per il tavolo grande. MySQL utilizza gli indici per i campi della tabella per rendere più veloce la ricerca. L'ottimizzatore query del server MySQL è un componente utile per ottimizzare l'esecuzione delle query utilizzando le statistiche disponibili. Se le statistiche mostrano che il valore di ricerca esiste nella maggior parte dei record della tabella, allora non vi è alcun vantaggio nell'uso dell'indice. Se le statistiche mostrano che il valore di ricerca esiste in alcuni record della tabella, è utile utilizzare l'indice per rendere più veloce la ricerca. MySQL può forzare l'indice quando l'ottimizzatore query ignora l'indice.

Sintassi:

La sintassi dell'indice di forza è riportata di seguito.

SELEZIONARE *
Da table_name
Force Index (Index_List)
Dove condizione;

Qui, l'indice_list conterrà uno o più nomi di colonne di table_name utilizzati per la ricerca.

Prerequisiti:

È necessario creare una tabella di database con i dati in un database MySQL per controllare la funzione dell'indice di forza di MySQL. Apri il terminale e connettiti con il server MySQL eseguendo il comando seguente.

$ sudo mysql -u root

Esegui il comando seguente per creare un database denominato test_db.

Crea database test_db;

Esegui il comando seguente per selezionare il database.

Usa test_db;

Esegui la seguente query per creare una tabella denominata dipendenti con cinque campi.

Crea "dipendenti" di tabella (
'id' int (11) auto_increment,
'Nome' VARCHAR (50) NON NULL,
'post' Varchar (25) non null,
Data di "joining_date" non null,
'stipendio' int non null,
Chiave primaria (id));

Esegui la seguente query Insert per aggiungere sei valori nella tabella dei dipendenti.

Inserisci in "dipendenti" ("id", "nome", "post", "joining_date", "stipendio") valori
(Null, "Nur Jahan", "Assistant Manager", "2021-01-05", 78000),
(Null, "Asif Iqbal", "Manager", "2019-03-20", 56000),
(Null, "Jafar Iqbal", "Assistant Manager", "2021-12-31", "60000"),
(Null, "Sefali Akter", "Marketing Officer", "2022-01-01", "65000"),
(Null, "Apurbo Chowdhury", "CEO", "2013-05-15", "350000"),
(Null, "Nirob Hasan", "Manager", "2019-12-18", "58000");

Esempio-1: controlla l'indice predefinito

Quando viene creata una tabella, la chiave primaria verrà definita come indice per impostazione predefinita. Esegui il seguente comando per verificare l'elenco dell'indice corrente dei dipendenti.

Mostrare indici dei dipendenti;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. L'output mostra che il Btree L'indice è stato assegnato per il id campo del dipendenti tavolo.

Se non viene assegnato alcun indice per il stipendio campo del dipendenti Tabella Dopo aver creato la tabella, tutti i record della tabella verranno scansionati dall'ottimizzatore di query per la seguente query. IL Spiegare La parola chiave viene utilizzata qui per ottenere le informazioni di esecuzione della query selezionata.

Spiega Seleziona * dai dipendenti
Dove stipendio> = 60000;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. L'output mostra che tutte le righe erano necessarie per eseguire i dati di query e filtro dal dipendenti tavolo.

Esempio-2: controlla l'esecuzione della query dopo aver creato l'indice

Devi definire l'indice per il stipendio campo del dipendenti tabella per ottimizzare correttamente la query. Eseguire la seguente query per creare l'indice per il stipendio campo del dipendente tavolo.

Crea indice Index_Salary sui dipendenti (stipendio);

Esegui nuovamente il seguente comando per verificare lo stato dell'indice corrente della tabella dei dipendenti.

Mostrare indici dei dipendenti;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito il comando sopra. L'output mostra che ora ci sono due indici BTREE nella tabella dei dipendenti.

Esegui nuovamente la query selezionata precedente per verificare le informazioni di esecuzione della query. L'output dell'istruzione spiega potrebbe non essere accurato per la tabella contenente pochi record o può variare per diverse esecuzioni. È meglio aggiungere record di grandi dimensioni nella tabella per ottenere il risultato approssimativamente corretto.

Spiega Seleziona * dai dipendenti
Dove stipendio> = 60000;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. L'output mostra che erano necessarie 4 righe per eseguire la query e filtrare i dati dal dipendenti tavolo. Secondo l'output, il tempo di esecuzione della query è 0.04 Secondi a cui accedevano 4 righe per ottenere l'output.

Esempio-3: controllare l'esecuzione della query dopo aver usato l'indice di forza

L'ottimizzatore query utilizzerà l'indice definito o meno che dipende dalle condizioni della query, dal numero di record della query e dal numero di righe corrispondenti della tabella in base alla condizione.

Eseguire la seguente query per forzare l'ottimizzatore di query a utilizzare il indice_salary indice al momento dell'esecuzione delle query. IL Indice di forza L'istruzione viene utilizzata prima della clausola Where della query Seleziona per forzare l'ottimizzatore di query a utilizzare il indice_salary indice.

Spiega Seleziona * dai dipendenti
Force Index (Index_Salary)
Dove stipendio> = 60000;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. L'output mostra che erano necessarie 4 righe per eseguire la query e filtrare i dati dal dipendenti tavolo. Secondo l'output, il tempo di esecuzione della query è 0.00 Secondi a cui accedevano 4 righe per ottenere l'output. Questo output può anche variare per diverse esecuzioni.

Conclusione:

La funzione dell'indice di forza di MySQL è utile quando si cerca il valore particolare in una tabella che contiene un gran numero di record. Il modo di creare un indice per una tabella e costringere l'ottimizzatore query a utilizzare quell'indice con forza al momento dell'esecuzione delle query utilizzando l'istruzione indice di forza è stato mostrato in questo tutorial.