Hvordan du bruker mysql forklarerklæring

Hvordan du bruker mysql forklarerklæring
Databasebrukeren må kjøre forskjellige typer spørsmål til forskjellige formål. Men noen ganger returnerer ikke mange spørsmål de forventede resultatene, og databaseadministratoren trenger å finne ut årsaken. MySQL inneholder et nyttig verktøy som heter FORKLARE til diagnosen feilen som spørringsuttalelsen ikke fungerer som den skal. Det brukes i begynnelsen av en hvilken som helst spørringsuttalelse for å gi informasjon om utførelsen av spørringen. Forklar nøkkelord kan brukes med Select, Sett inn, oppdater, slette og erstatte utsagn. Hvordan forklare nøkkelord fungerer med utvalgte utsagn for å diagnostisere feil i spørringen eller optimalisere spørringen vises i denne artikkelen.

Forklar nøkkelordutgang for velg spørring:

Når forklaringsnøkkelordet blir utført med SELECT -setningen, vil utdataene fra forklaringen returnere følgende kolonner.

Kolonne Beskrivelse
id Det indikerer identifikatoren til spørringen. Det representerer det sekvensielle antallet utvalgte spørsmål.
SELECT_TYPE Det indikerer hvilken type valgt spørring. Typen kan være enkel, primær, subquery, union osv.
bord Det indikerer tabellnavnet som brukes i spørringen.
partisjoner Det indikerer partisjonene i den undersøkte partisjonerte tabellen.
type Det indikerer at sammenkoblingstypen eller tilgangstypen på tabellene.
mulige_keys Det indikerer nøklene som kan brukes av MySQL for å finne rader fra bordet.
nøkkel Det indikerer indeksen som brukes av mysql.
Key_len Det indikerer lengden på indeksen som vil bruke av spørringsoptimisatoren.
ref Det indikerer kolonnene eller konstantene som er sammenlignet med indeksen som er nevnt i nøkkelkolonnen
rader Det indikerer listene over poster som ble undersøkt.
filtrert Det indikerer den estimerte prosentandelen av tabellrader som vil bli filtrert av tilstanden.
ekstra Det indikerer tilleggsinformasjonen om utførelsesplanen.

Anta at du har to relaterte tabeller som heter Kunder og bestillinger i databasen som heter selskap. De nødvendige SQL -utsagnene for å opprette databasen og tabellene med data er gitt nedenfor.

Opprette databaseselskap;
Bruk selskap;
Lag bordkunder (
id int (5) Auto_increment primærnøkkel,
Navn varchar (50) ikke null,
mobil_no varchar (50) ikke null,
E -post varchar (50) ikke null) motor = innodb;
Lag bordbestillinger (
ID VARCHAR (20) Primærnøkkel,
ordre_dato dato,
customer_id int (5) ikke null,
levering_adress varchar (50) ikke null,
Beløp int (11),
Utenlandsk nøkkel (Customer_id) Referanser kunder (ID))
Motor = innodb;
Sett inn kunders verdier
(Null, 'Johnathan', '18477366643', '[email protected] '),
(Null, 'Musfiqur Rahman', '17839394985', '[email protected] '),
(Null, 'Jimmy', '14993774655', '[email protected] ');
Sett inn ordrerverdi
('1937747', '2020-01-02', 1, 'New Work', 1000),
('8633664', '2020-02-12', 3, 'Texas', 1500),
('4562777', '2020-02-05', 1, 'California', 800),
('3434959', '2020-03-01', 2, 'New Work', 900),
('7887775', '2020-03-17', 3, 'Texas', 400);

Kjør følgende uttalelse for å se den gjeldende postlisten over Kunder bord.

Velg * fra kunder;

Kjør følgende uttalelse for å se den gjeldende postlisten over bestillinger bord.

Velg * fra bestillinger;

Bruk av enkel forklaringsuttalelse:

Følgende SQL -setningen vil returnere nøkkelordet til forklaringsoppgaven til en enkel valgt spørring som henter alle poster fra kundetabellen.

Forklar velg * fra kunder \ g;

Følgende utgang vises etter å ha kjørt uttalelsen. Det er en enkelt tabellforespørsel og ingen spesielle klausuler som Join, Union osv. brukes i spørringen. For dette, verdien av SELECT_TYPE er ENKEL. Kundetabellen inneholder bare tre poster, det er derfor verdien av rader er 3. Verdien av filtrert er 100% fordi alle poster i tabellen blir hentet.

Bruk av forklaring i Select Query med Join:

Følgende forklaringsuttalelse blir brukt i en valgt spørring av to tabeller med Join Clause og A Where Condition.

Forklar utvalgte kunder.Navn, bestillinger.ordre_date, bestillinger.beløp
Fra kunder
Bli med på bestillinger på (kunder.ID = bestillinger.Kunde ID)
Hvor kunder.Navn = 'Johnathan' \ g

Følgende utgang vises etter å ha kjørt uttalelsen. Her, SELECT_TYPE er enkelt for begge bordene. To tabeller er relatert til en-til-mange forhold. Den primære nøkkelen av Kunder Tabellen brukes som en fremmed nøkkel av bestillinger bord. For dette, verdien av mulige_keys for den andre raden er Kunde ID. Den filtrerte verdien er 33% til Kunder bord fordi 'Johnathan' er den første oppføringen av denne tabellen og trenger ikke å søke mer. Den filtrerte verdien av bestillinger tabellen er 100% På grunn av alle verdier av bestillinger Tabell som kreves for å sjekke for å hente dataene.

Det er en advarsel i utdataene fra ovennevnte uttalelse. Følgende uttalelse brukes til å se spørringen som utføres etter å ha gjort noen endring av spørringsoptimisatoren eller sjekk årsaken til feilen hvis det oppstår noen feil etter å ha utført spørringen.

Vis advarsler \ G

Det er ingen feil i spørringen. Utgangen viser den modifiserte spørringen som blir utført.

Bruk av forklar for å finne ut feilen i SELECT -spørring:

SELECT -spørringen som brukes i følgende forklaringsuttalelse inneholder en feil. Datoformatet som støttes av MySQL er 'Yyyy-mm-dd'. Men i hvor tilstanden til denne spørringen er datoverdien gitt som 'Dd-mm-yyyy' det er feil.

Forklar utvalgte kunder.Navn, bestillinger.ordre_date, bestillinger.beløp
Fra kunder
Bli med på bestillinger på (kunder.ID = bestillinger.Kunde ID)
Hvor bestillinger.ordre_date = '10 -10-2020 '\ g

Følgende utdata vises etter å ha kjørt uttalelsen. Det vil vise to advarsler. Den ene er standard som er forklart i forrige eksempel, og en annen er for datofeilen som er nevnt før.

Kjør uttalelsen for å se feilen.

Vis advarsler \ G

Utgangen viser feilen tydelig med en feilmelding og kolonnenavn.

Bruk av forklaring i Select Query with Union All Operator:

Union All Operator brukes i SELECT -spørringen for å hente alle samsvarende kolonneverdier med duplikater fra de relaterte tabellene. Følgende uttalelse vil vise forklaringsutgangen til å bruke unions all operatør mellom Kunder og bestillinger bord.

Forklar velg ID som ID
Fra kunder
Union alle
Velg Customer_ID som ID
Fra bestillinger \ G

Følgende utgang vises etter å ha kjørt uttalelsen. Her, verdien av SELECT_TYPE er Union for den andre raden i utgangen og verdien av Ekstra er indeksen.

Konklusjon:

Veldig enkel bruk av forklaringsuttalelsen vises i denne artikkelen. Men denne uttalelsen kan brukes til å løse forskjellige kompliserte databaseproblemer og optimalisere databasen for bedre ytelse.