MySQL Force Index

MySQL Force Index
Den spesielle verdien i et tabellfelt kan søkes raskt ved å bruke en indeks. Hvis ingen indeks er definert i tabellen, starter søket fra den første posten og slutter å søke der søkeverdien eksisterer. Hvis søkeverdien ikke eksisterer i tabellen, vil søket stoppe etter å ha itering den siste posten. Det er veldig tidkrevende for det store bordet. MySQL bruker indekser for bordets felt for å gjøre søket raskere. MySQL Server's Query Optimizer er en nyttig komponent for å optimalisere utførelsen av spørringen ved å bruke tilgjengelig statistikk. Hvis statistikken viser at søkeverdien eksisterer i de fleste av tabellens poster, er det ingen fordel å bruke indeksen. Hvis statistikken viser at søkeverdien eksisterer i noen få tabellposter, er det gunstig å bruke indeksen for å gjøre søket raskere. MySQL kan tvinge indeksen når spørringsoptimisatoren ignorerer indeksen.

Syntaks:

Syntaksen til kraftindeksen er gitt nedenfor.

PLUKKE UT *
Fra tabellnavn
Force index (index_list)
Hvor tilstand;

Her vil indeks_listen inneholde ett eller flere kolonnenavn på tabellenavnet som brukes til å søke.

Forutsetninger:

Du må opprette en databasetabell med data i en MySQL -database for å sjekke Force Index -funksjonen til MySQL. Åpne terminalen og koble til MySQL -serveren ved å utføre følgende kommando.

$ sudo mysql -u root

Kjør følgende kommando for å opprette en database som heter test_db.

Opprette databasetest_db;

Kjør følgende kommando for å velge databasen.

Bruk test_db;

Kjør følgende spørsmål for å opprette en tabell som heter ansatte med fem felt.

Lag tabell 'ansatte' (
'id' int (11) auto_increment,
'navn' varchar (50) ikke null,
'post' varchar (25) ikke null,
'joining_date' date ikke null,
'lønn' int ikke null,
Primærnøkkel (ID));

Kjør følgende sett inn spørring for å legge til seks verdier i den ansatte tabellen.

Sett inn 'ansatte' ('id', 'navn', 'post', 'joining_date', 'lønn') verdier
(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');

Eksempel 1: Kontroller standardindeksen

Når en tabell opprettes, vil den primære nøkkelen bli definert som en indeks som standard. Kjør følgende kommando for å sjekke gjeldende indeksliste over de ansatte.

Vis indekser fra ansatte;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Utgangen viser at Btree Indeks er tildelt for id felt av ansatte bord.

Hvis ingen indeks er tildelt for lønn felt av ansatte Tabell Etter å ha opprettet tabellen, blir alle poster over tabellen skannet av spørringsoptimisatoren for følgende spørring. De Forklare Nøkkelord brukes her for å få utførelsesinformasjonen til SELECT -spørringen.

Forklar velg * fra ansatte
Hvor lønn> = 60000;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Utgangen viser at alle radene ble pålagt å utføre spørringen og filterdataene fra ansatte bord.

Eksempel-2: Kontroller utførelsen av spørringen etter å ha opprettet indeksen

Du må definere indeksen for lønn felt av ansatte Tabell for å optimalisere spørringen riktig. Kjør følgende spørsmål for å opprette indeksen for lønn felt av ansatt bord.

Opprette indeksindeks_salary for ansatte (lønn);

Kjør følgende kommando igjen for å sjekke gjeldende indeksstatus for de ansattes tabell.

Vis indekser fra ansatte;

Produksjon:

Følgende utgang vises etter å ha utført kommandoen ovenfor. Utgangen viser at det er to BTREE -indekser nå i de ansatte -tabellen.

Kjør forrige utvalgte spørring igjen for å sjekke utførelsesinformasjonen til spørringen. Utgangen fra forklaringsuttalelsen er kanskje ikke nøyaktig for tabellen som inneholder få poster eller kan variere for forskjellige henrettelser. Det er bedre å legge til store poster i tabellen for å få det tilnærmet riktige resultatet.

Forklar velg * fra ansatte
Hvor lønn> = 60000;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Utgangen viser at 4 rader ble pålagt å utføre spørringen og filtrere dataene fra ansatte bord. I følge utdataene er spørringens utførelsestid 0.04 sekunder som fikk tilgang til 4 rader for å få utdataene.

Eksempel-3: Kontroller utførelsen av spørringen etter bruk av Force Index

Query Optimizer vil bruke den definerte indeksen eller ikke som avhenger av spørringens tilstand, antall poster for spørringen, og antall matchende rader i tabellen basert på tilstanden.

Kjør følgende spørring for å tvinge spørringsoptimisøren til å bruke INDEX_SALARY Indeks på tidspunktet for utførelse av spørring. De Force Index uttalelse brukes før hvor leddet i SELECT -spørringen for å tvinge spørringsoptimisatoren til å bruke INDEX_SALARY indeks.

Forklar velg * fra ansatte
Force Index (Index_Salary)
Hvor lønn> = 60000;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Utgangen viser at 4 rader ble pålagt å utføre spørringen og filtrere dataene fra ansatte bord. I følge utdataene er spørringens utførelsestid 0.00 sekunder som fikk tilgang til 4 rader for å få utdataene. Denne utgangen kan også variere for forskjellige henrettelser.

Konklusjon:

Force Index -funksjonen til MySQL er nyttig når du søker i den spesielle verdien i en tabell som inneholder et stort antall poster. Måten å lage en indeks for en tabell og tvinge spørringsoptimisatoren til å bruke den indeksen kraftig på tidspunktet for utførelsen av spørringen ved å bruke Force Index -setningen, er vist i denne opplæringen.