Nemtokake kolom sing dibutuhake ing SELECT
pitakon
Tinimbang milih kabeh kolom ing SELECT
pitakon, mung pilih kolom sing dibutuhake kanggo nyuda beban lan nambah kacepetan pitakon.
Contone, yen sampeyan mung peduli karo jeneng lan alamat pelanggan, ganti pitakon:
SELECT * FROM customers;
karo
SELECT name, address FROM customers;
Nggawe indeks
Index
mbantu MySQL
nggoleki lan njupuk data luwih cepet. Ngenali kolom sing kerep digunakake ing WHERE
, JOIN
, utawa ORDER BY
klausa lan nggawe indeks kanggo wong-wong mau.
Contone, ing orders
tabel " ", yen customer_id
kolom " " asring digunakake ing WHERE
utawa JOIN
pitakon, sampeyan bisa nggawe indeks kaya ing ngisor iki:
CREATE INDEX idx_customer_id ON orders(customer_id);
Gunakake jinis indeks sing cocog
MySQL
nyedhiyakake macem-macem jinis indeks kayata B-tree
, hash, lan full-text
. Pilih jinis indeks sing cocog adhedhasar syarat pitakon sampeyan kanggo njamin kinerja sing optimal.
Contone, yen sampeyan kudu nggoleki teks ing kolom data, sampeyan bisa nggawe full-text
indeks kaya ing ngisor iki:
CREATE FULLTEXT INDEX idx_description ON products(description);
Ngoptimalake pitakon
Gunakake EXPLAIN
kanggo ndeleng rencana eksekusi query lan nganalisa carane MySQL
nindakake. Iki mbantu sampeyan ngenali masalah kinerja lan ngoptimalake pitakon kanthi nggunakake indeks utawa nulis ulang pitakon.
Contone, kanggo ndeleng rencana pitakon pitakon SELECT
, jalanake prentah ing ngisor iki:
EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
Matesi jumlah asil bali
Nalika pitakonan ngasilake asil akeh, matesi jumlah asil bali nggunakake LIMIT
klausa. Iki mbantu nyuda beban lan nambah kacepetan pitakon.
Contone, kanggo mung ngasilake 10 asil saka tabel "produk", sampeyan bisa nggunakake pitakon ing ngisor iki:
SELECT * FROM products LIMIT 10;
Gunakake INNER JOIN
tinimbang JOIN
INNER JOIN
performs luwih apik tinimbang biasa JOIN
. Gunakake INNER JOIN
nalika sampeyan mung Care babagan cathetan sing duwe match ing loro tabel.
Contone, kanggo nggabungake tabel " orders
" lan " customers
" adhedhasar customer_id
kolom " ", sampeyan bisa nggunakake pitakon ing ngisor iki:
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
Gunakake tabel sementara kanthi ati-ati
Tabel sauntara bisa digunakake ing kasus tartamtu, nanging kudu digunakake kanthi ati-ati amarga bisa alon-alon pitakon. Coba ngoptimalake pitakon supaya ora nggunakake tabel sementara yen bisa.
Contone, tinimbang nggunakake tabel sementara ing pitakon ing ngisor iki:
CREATE TEMPORARY TABLE temp_table SELECT * FROM products;
sampeyan bisa nyoba ngoptimalake query kanggo langsung query data saka tabel asli.
Fine-tune konfigurasi MySQL
Coba konfigurasi ulang MySQL kanggo ngoptimalake sumber daya sistem lan selaras karo syarat aplikasi sampeyan. Iki kalebu konfigurasi memori, ukuran buffer, watesan sambungan, lan paramèter liyane. Deleng dokumentasi MySQL lan sinau carane nyetel konfigurasi supaya cocog karo lingkungan tartamtu.
Mbusak data sing ora perlu
Mbusak data sing ora perlu utawa gawe serep data lawas kanggo nyuda ukuran database lan nambah kacepetan pitakon.
Contone, yen sampeyan duwe " logs
" tabel sing nyimpen cathetan log lawas, sampeyan bisa mbusak cathetan sing luwih lawas tinimbang setahun nggunakake pitakon ing ngisor iki:
DELETE FROM logs WHERE created_at < '2022-01-01';
Gunakake memori cache
Konfigurasi memori MySQL cache
kanggo nyimpen pitakon sing kerep dieksekusi lan data sing mentas diakses. Iki mbantu nyuda wektu akses disk lan nambah kacepetan pitakon.
Contone, kanggo ngatur cache memori kanthi ukuran 1GB, sampeyan bisa ngowahi file konfigurasi "my.cnf" MySQL kaya ing ngisor iki:
[mysqld]
...
query_cache_type = 1
query_cache_size = 1G
Wigati dimangerteni manawa conto ing ndhuwur minangka ilustrasi lan kudu diatur miturut struktur lan syarat database sampeyan. Tes kanthi ati-ati lan evaluasi efektifitas sadurunge lan sawise ngetrapake teknik optimasi iki kanggo mesthekake yen cocog kanggo lingkungan tartamtu sampeyan.