Nyatakan medan yang diperlukan dalam SELECT
pertanyaan
Daripada memilih semua medan dalam SELECT
pertanyaan, hanya pilih medan yang diperlukan untuk mengurangkan beban dan meningkatkan kelajuan pertanyaan.
Sebagai contoh, jika anda hanya mengambil berat tentang nama dan alamat pelanggan, gantikan pertanyaan:
SELECT * FROM customers;
dengan
SELECT name, address FROM customers;
Buat indeks
Index
membantu MySQL
mencari dan mendapatkan data dengan lebih cepat. Kenal pasti medan yang kerap digunakan dalam WHERE
, JOIN
, atau ORDER BY
klausa dan buat indeks untuknya.
Contohnya, dalam orders
jadual " ", jika customer_id
medan " " kerap digunakan dalam WHERE
atau JOIN
pertanyaan, anda boleh membuat indeks seperti berikut:
CREATE INDEX idx_customer_id ON orders(customer_id);
Gunakan jenis indeks yang sesuai
MySQL
menyediakan pelbagai jenis indeks seperti B-tree
, hash dan full-text
. Pilih jenis indeks yang sesuai berdasarkan keperluan pertanyaan anda untuk memastikan prestasi optimum.
Contohnya, jika anda perlu mencari teks dalam medan data, anda boleh membuat full-text
indeks seperti berikut:
CREATE FULLTEXT INDEX idx_description ON products(description);
Optimumkan pertanyaan
Gunakan EXPLAIN
untuk melihat pelan pelaksanaan pertanyaan dan menganalisis cara MySQL
melaksanakannya. Ini membantu anda mengenal pasti isu prestasi dan mengoptimumkan pertanyaan dengan menggunakan indeks atau menulis semula pertanyaan.
Sebagai contoh, untuk melihat rancangan pertanyaan pertanyaan SELECT
, jalankan arahan berikut:
EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
Hadkan bilangan hasil yang dikembalikan
Apabila pertanyaan mengembalikan sejumlah besar hasil, hadkan bilangan hasil yang dikembalikan menggunakan LIMIT
klausa. Ini membantu mengurangkan beban dan meningkatkan kelajuan pertanyaan.
Contohnya, untuk hanya mengembalikan 10 hasil daripada jadual "produk", anda boleh menggunakan pertanyaan berikut:
SELECT * FROM products LIMIT 10;
Gunakan INNER JOIN
bukannya JOIN
INNER JOIN
berprestasi lebih baik daripada biasa JOIN
. Gunakan INNER JOIN
apabila anda hanya mengambil berat tentang rekod yang mempunyai padanan dalam kedua-dua jadual.
Contohnya, untuk menyertai jadual " orders
" dan " customers
" berdasarkan customer_id
medan " ", anda boleh menggunakan pertanyaan berikut:
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
Gunakan jadual sementara dengan berhati-hati
Jadual sementara boleh digunakan dalam kes tertentu, tetapi ia perlu digunakan dengan berhati-hati kerana ia boleh melambatkan pertanyaan. Pertimbangkan untuk mengoptimumkan pertanyaan untuk mengelak daripada menggunakan jadual sementara jika boleh.
Sebagai contoh, bukannya menggunakan jadual sementara dalam pertanyaan berikut:
CREATE TEMPORARY TABLE temp_table SELECT * FROM products;
anda boleh cuba mengoptimumkan pertanyaan untuk menanyakan data secara langsung daripada jadual asal.
Perhalusi konfigurasi MySQL
Pertimbangkan untuk mengkonfigurasi semula MySQL untuk memanfaatkan sepenuhnya sumber sistem dan selaras dengan keperluan aplikasi anda. Ini termasuk mengkonfigurasi memori, saiz penimbal, had sambungan dan parameter lain. Rujuk dokumentasi MySQL dan pelajari cara melaraskan konfigurasi agar sesuai dengan persekitaran khusus anda.
Padamkan data yang tidak diperlukan
Padamkan data yang tidak diperlukan atau sandarkan data lama untuk mengurangkan saiz pangkalan data dan meningkatkan kelajuan pertanyaan.
Contohnya, jika anda mempunyai logs
jadual " " yang menyimpan rekod log lama, anda boleh memadamkan rekod yang lebih lama daripada setahun menggunakan pertanyaan berikut:
DELETE FROM logs WHERE created_at < '2022-01-01';
Gunakan ingatan cache
Konfigurasikan memori MySQL cache
untuk menyimpan pertanyaan yang kerap dilaksanakan dan data yang diakses baru-baru ini. Ini membantu mengurangkan masa capaian cakera dan meningkatkan kelajuan pertanyaan.
Contohnya, untuk mengkonfigurasi cache memori dengan saiz 1GB, anda boleh mengubah suai fail konfigurasi "my.cnf" MySQL seperti berikut:
[mysqld]
...
query_cache_type = 1
query_cache_size = 1G
Sila ambil perhatian bahawa contoh di atas adalah ilustrasi dan perlu diselaraskan mengikut struktur dan keperluan pangkalan data sebenar anda. Berhati-hati menguji dan menilai keberkesanan sebelum dan selepas menggunakan teknik pengoptimuman ini untuk memastikan ia sesuai untuk persekitaran khusus anda.