SELECT * FROM employees WHERE last_name = 'Smith';
jika anda menanyakan satu lajur jadual beberapa kali maka buat indeks untuk lajur itu
jika anda atau apl anda memerlukan data daripada berbilang lajur berdasarkan syarat, maka buat indeks komposit
Cth. Jadual anda mengandungi lajur seperti create_at dan updated_At dan timesptamps kemudian elakkan daripada memilih * kerana ia tidak diperlukan dalam senario biasa
Pertanyaan Tidak Cekap
SELECT * FROM orders WHERE order_date > '2023-01-01';
Pertanyaan Dioptimumkan
SELECT order_id, customer_id FROM orders WHERE order_date > '2023-01-01';
jika anda menyertai jadual dengan kunci utama maka tidak perlu mencipta kerana kunci Utama sudah menjadi indeks
SELECT orders.order_id, customers.name FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.country = 'USA';
dalam pertanyaan di atas orders.customer_id perlu diindeks dan hubungannya dari jadual lain
customers.id ialah kunci utama jadual pelanggan jadi tidak perlu membuat indeks
pelanggan.negara perlu diindeks kerana ia adalah syarat
seperti penyenaraian pengguna dan pesanan serta barangan lain yang tidak kerap berubah
CREATE TABLE orders ( order_id INT NOT NULL, order_date DATE NOT NULL, ... PRIMARY KEY (order_id, order_date) ) PARTITION BY RANGE (YEAR(order_date)) ( PARTITION p0 VALUES LESS THAN (2000), PARTITION p1 VALUES LESS THAN (2010), PARTITION p2 VALUES LESS THAN (2020), PARTITION p3 VALUES LESS THAN MAXVALUE );
Atas ialah kandungan terperinci Pengoptimuman pertanyaan dalam MySQL adalah penting untuk meningkatkan prestasi pangkalan data, terutamanya apabila berurusan dengan set data yang besar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!