Kā optimizēt vaicājumus savās MySQL un MariaDB datu bāzēs

MariaDB un MySQL ir labākās iespējas, ja runa ir par datu bāzu pārvaldības sistēmām, kuras izmanto SQL (strukturēto vaicājumu valodu). SQL tiek izmantots relāciju datu bāzēs, lai uzglabātu, apstrādātu un izgūtu datus.


SQL vaicājumus ir vienkārši izstrādāt. Tomēr vāji uzrakstīti vaicājumi darbojas neefektīvi, tādējādi palēninot servera reakcijas laiku. Neefektīvi vaicājumi var vēl vairāk pasliktināt jūsu lietojumprogrammas veiktspēju, jo informācija palielinās līdz tūkstošiem vai miljoniem sekunžu.

Šajā rakstā ir apskatīti pasākumi, kurus varat veikt, lai palielinātu SQL vaicājumu ātrumu, kas darbojas MySQL / MariaDB.

Īpaša piezīme: ja vēlaties uzlabot SQL servera veiktspēju, varat apsvērt arī pāreju uz labāku tīmekļa resursdatoru. Dodieties uz HostAdvice labāko MySQL mitināšanas lapu, lai atrastu vadošos tīmekļa mitinātājus šajā kategorijā, ieskaitot ekspertu, kā arī lietotāju atsauksmes.

Normalizējiet tabulas

Normalizēšana ir pirmais solis, kas jums jāveic, saglabājot datus datu bāzē. Jūsu galdiem jābūt labi organizētiem, lai samazinātu atlaišanu. Jums vajadzētu arī izstrādāt noteikumus, lai saistītu datus dažādās tabulās.

SQL datu bāzu formalizēšanai var būt vajadzīgas papildu tabulas, lai izvairītos no datu dublēšanās. Piemēram, ja jums ir klienta un pasūtījuma tabula, jums nevajadzētu atkārtot klienta vārdu pasūtījumu tabulā. Tā vietā pasūtījuma tabulā varat izmantot klienta ID, kas novirza atpakaļ uz galvenā klienta tabulu.

Izmantojiet pareizos datu veidus

Pārliecinieties, vai tabulās izmantojat pareizos datu tipus. Piemēram, jūs varat saglabāt klienta ID, kas iesniegts laukā “vesels skaitlis”, nevis datu tipā “Varchar”, jo pirmais ir viegls un ātrāk vaicājams.

Indeksēt visas kolonnas

Visas kolonnas, kas izmantotas klauzulās “kur”, “grupējot pēc”, “pievienoties” un “kārtot pēc”, būtu jāindeksē no paša sākuma. Tas nodrošina, ka datu bāze neveic pilnu tabulas skenēšanu, mēģinot izgūt ierakstus.

Piemēram, zemāk esošajā vaicājumā jāindeksē lauki Customer_Id un Transaction_Date:

Atlasiet * no pasūtījumiem, kuros Customer_Id = ‘1041’ pasūtījums veikts ar Transaction_Date asc

Izmantojiet skaidrojošo atslēgu, lai analizētu vaicājumus

Ja vaicājums darbojas lēni, dodiet tam priekšā vārdu “Izskaidrojiet”, lai redzētu tā uzvedību un iegūtu informāciju par to, kā paziņojums darbojas aizkulisēs..

Piemēram, mēs varam atkārtot iepriekš minēto vaicājumu, izmantojot skaidrojošo atslēgvārdu:

Izskaidrojiet atlasiet * no pasūtījumiem, kur klienta ID = ‘1041’ pasūtījums veikts ar darījuma_Datuma datumu

Kad esat izpildījis šādu vaicājumu, jums jāpārbauda kolonna iespējamie taustiņi ” par ierakstu komplektu atgriezās. Ja vērtība ir iespējamie taustiņi ” ir ‘Nulle’, jūs varat pievienot indeksus, lai paātrinātu vaicājumu.

Izmantojiet “union by”, lai paātrinātu vaicājumus

Līdzīgs paziņojums var būt ārkārtīgi lēns, ja to darbina vairākās kolonnās. Piemēram, apsveriet zemāk esošo vaicājumu:

Atlasiet * no klientiem, kur First_Name, piemēram, “fra%” vai Last_Name, piemēram, “joh%”

Mēs varam optimizēt to pašu vaicājumu, izmantojot savienības klauzulu, kā parādīts zemāk:

Atlasiet * no klientiem, kur First_Name patīk “fra%” savienība Atlasiet * no klientiem, kur Last_Name piemēram “joh%”

Neizmantojiet indeksu funkcijas

Veicot vaicājumus, izmantojot funkciju indeksētajā kolonnā, MySQL / MariaDB ignorē indeksu. Piemēram, ja esat indeksējis ‘Kompānijas nosaukums’ pārdevēja tabulas laukā un izmantojiet tādu vaicājumu kā šis, indekss tiks ignorēts, liekot vaicājumam darboties lēnām.

Atlasiet * no piegādātājiem, kur augšējais (uzņēmuma_nosaukums) = “ABC”

Nelietojiet savvaļas rakstzīmi rādītāja priekšā

Šis vaicājums liks MySQL / MariaDB veikt visas tabulas skenēšanu.

Atlasiet * no klientiem, kur First_Name patīk “% fra%”

Tā vietā izmantojiet zemāk esošo sintakse:

Atlasiet * no klientiem, kur First_Name patīk “fra%”

Atlasītajā paziņojumā iekļaujiet tikai nepieciešamās slejas

Piemēram, ja vēlaties atgriezt pasūtījumu sarakstu ar “Pasūtīt_Id” un “Summa”, varat izmantot zemāk esošo vaicājumu:

Atlasiet Pasūtījuma ID, Summa no pasūtījumiem

Iepriekš minētais vaicājums tiks izpildīts ātrāk nekā tālāk norādītais, jo pēdējais pieprasa visus laukus.

No pasūtījumiem atlasiet *

Secinājums

Iepriekš minētie ir dažādi veidi, kā varat optimizēt vaicājumus savos MySQL / MariaDB serveros. Ar padomiem jums vajadzētu sākt strādāt, lai gan datu bāzes veiktspējas precizēšanas specifika ir atkarīga no tā, ko vēlaties paveikt savā tīmekļa lietojumprogrammā vai vietnē. Ja konstatējat lēnus vaicājumus, mēģiniet pielāgot SQL sintakse, izmantojot iepriekš minētos ieteikumus, un jūs redzēsiet lielus uzlabojumus MySQL / MariaDB datu bāzes veiktspējā.

Iepazīstieties ar top 3 MySQL mitināšanas pakalpojumiem:

A2 mitināšana

Sākuma cena:
3,92 USD


Uzticamība
9.3


Cenu noteikšana
9.0


Lietotāju draudzīgs
9.3


Atbalsts
9.3


Iespējas
9.3

Lasīt atsauksmes

Apmeklējiet vietni A2 Hostings

FastComet

Sākuma cena:
2,95 USD


Uzticamība
9.7


Cenu noteikšana
9.5


Lietotāju draudzīgs
9.7


Atbalsts
9.7


Iespējas
9.6

Lasīt atsauksmes

Apmeklējiet vietni FastComet

Hostinger

Sākuma cena:
0,99 USD


Uzticamība
9.3


Cenu noteikšana
9.3


Lietotāju draudzīgs
9.4


Atbalsts
9.4


Iespējas
9.2

Lasīt atsauksmes

Apmeklējiet vietni Hostinger

Saistītie padomi

  • Kā dublēt un atjaunot MySQL no cPanel
    starpposms
  • Kā pārvaldīt MySQL datu bāzes un lietotājus vietnē cPanel
    starpposms
  • Kā pārvietot savu WordPress vietni no vietējā Web servera uz jūsu vietni Live
    starpposms
  • Kā atspējot MySQL 5 "Stingrs režīms" Ubuntu 18.04 VPS vai speciālajā serverī
    starpposms
  • Kā instalēt phpIPAM uz CentOS 7
    starpposms
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me