Bainisha sehemu zinazohitajika katika SELECT
hoja
Badala ya kuchagua sehemu zote kwenye SELECT
hoja, chagua sehemu zinazohitajika tu ili kupunguza mzigo na kuboresha kasi ya hoja.
Kwa mfano, ikiwa unajali tu jina na anwani ya mteja, badilisha hoja:
SELECT * FROM customers;
na
SELECT name, address FROM customers;
Unda faharasa
Index
kusaidia MySQL
kutafuta na kurejesha data kwa haraka. Tambua sehemu ambazo hutumiwa mara kwa mara katika WHERE
, JOIN
, au ORDER BY
vifungu na uunde faharasa kwa ajili yao.
Kwa mfano, katika orders
jedwali " ", ikiwa customer_id
sehemu "" inatumika mara kwa mara katika WHERE
au JOIN
hoja, unaweza kuunda faharasa kama ifuatavyo:
CREATE INDEX idx_customer_id ON orders(customer_id);
Tumia aina zinazofaa za faharasa
MySQL
hutoa aina mbalimbali za faharasa kama vile B-tree
, heshi, na full-text
. Chagua aina inayofaa ya faharasa kulingana na mahitaji ya hoja yako ili kuhakikisha utendakazi bora.
Kwa mfano, ikiwa unahitaji kutafuta maandishi ndani ya uga wa data, unaweza kuunda faharasa full-text
kama ifuatavyo:
CREATE FULLTEXT INDEX idx_description ON products(description);
Boresha hoja
Tumia EXPLAIN
kutazama mpango wa utekelezaji wa hoja na kuchanganua jinsi MySQL
inavyotekelezwa. Hii hukusaidia kutambua matatizo ya utendaji na kuboresha hoja kwa kutumia faharasa au kuandika upya hoja.
Kwa mfano, ili kuona mpango wa swala SELECT
, endesha amri ifuatayo:
EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
Weka kikomo idadi ya matokeo yaliyorejeshwa
Hoja inaporudisha idadi kubwa ya matokeo, punguza idadi ya matokeo yaliyorejeshwa kwa kutumia LIMIT
kifungu. Hii husaidia kupunguza mzigo na kuboresha kasi ya hoja.
Kwa mfano, ili kurudisha matokeo 10 pekee kutoka kwa jedwali la "bidhaa", unaweza kutumia hoja ifuatayo:
SELECT * FROM products LIMIT 10;
Tumia INNER JOIN
badala ya JOIN
INNER JOIN
hufanya vizuri zaidi kuliko kawaida JOIN
. Tumia INNER JOIN
wakati unajali tu rekodi ambazo zina mechi katika jedwali zote mbili.
Kwa mfano, kujiunga na majedwali " orders
" na " customers
" kulingana na customer_id
sehemu "", unaweza kutumia swali lifuatalo:
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
Tumia meza za muda kwa uangalifu
Majedwali ya muda yanaweza kutumika katika hali fulani, lakini yanahitaji kutumiwa kwa uangalifu kwani yanaweza kupunguza kasi ya maswali. Zingatia kuboresha hoja ili kuepuka kutumia majedwali ya muda ikiwezekana.
Kwa mfano, badala ya kutumia jedwali la muda katika swali lifuatalo:
CREATE TEMPORARY TABLE temp_table SELECT * FROM products;
unaweza kujaribu kuboresha hoja ili kuuliza data moja kwa moja kutoka kwa jedwali asili.
Sanidi usanidi wa MySQL
Fikiria kusanidi upya MySQL ili kutumia vyema rasilimali za mfumo na kuoanisha mahitaji ya programu yako. Hii ni pamoja na kusanidi kumbukumbu, saizi za bafa, vikomo vya muunganisho, na vigezo vingine. Rejelea hati za MySQL na ujifunze jinsi ya kurekebisha usanidi ili kuendana na mazingira yako mahususi.
Futa data isiyo ya lazima
Futa data isiyo ya lazima au uhifadhi nakala ya data ya zamani ili kupunguza ukubwa wa hifadhidata na kuboresha kasi ya hoja.
Kwa mfano, ikiwa una logs
jedwali "" la kuhifadhi kumbukumbu za kumbukumbu za zamani, unaweza kufuta rekodi za zaidi ya mwaka mmoja kwa kutumia swali lifuatalo:
DELETE FROM logs WHERE created_at < '2022-01-01';
Tumia kumbukumbu cache
Sanidi kumbukumbu ya MySQL cache
ili kuhifadhi hoja zinazotekelezwa mara kwa mara na data iliyofikiwa hivi majuzi. Hii husaidia kupunguza muda wa kufikia diski na kuboresha kasi ya hoja.
Kwa mfano, ili kusanidi akiba ya kumbukumbu yenye ukubwa wa 1GB, unaweza kurekebisha faili ya usanidi ya MySQL ya "my.cnf" kama ifuatavyo:
[mysqld]
...
query_cache_type = 1
query_cache_size = 1G
Tafadhali kumbuka kuwa mifano iliyo hapo juu ni ya kielelezo na inahitaji kurekebishwa kulingana na muundo na mahitaji ya hifadhidata yako halisi. Jaribu kwa uangalifu na utathmini ufanisi kabla na baada ya kutumia mbinu hizi za uboreshaji ili kuhakikisha kuwa zinafaa kwa mazingira yako mahususi.