Bagaimana cara menggunakan Pernyataan Jelaskan MySQL

Pengguna basis data perlu menjalankan berbagai jenis kueri untuk tujuan yang berbeda. Tetapi terkadang banyak kueri tidak mengembalikan hasil yang diharapkan dan administrator basis data perlu mencari tahu alasannya. MySQL berisi alat yang berguna bernamaEXPLAINuntuk mendiagnosis error yang pernyataan kuerinya tidak berfungsi dengan benar. Ini digunakan di awal pernyataan kueri apa pun untuk memberikan informasi tentang eksekusi kueri. Kata kunci EXPLAIN dapat digunakan dengan pernyataan SELECT, INSERT, UPDATE, DELETE dan REPLACE. Cara MENJELASKAN kata kunci bekerja dengan pernyataan SELECT untuk mendiagnosis error kueri atau mengoptimalkan kueri ditampilkan dalam artikel ini.

JELASKAN keluaran kata kunci untuk kueri SELECT:

Ketika kata kunci EXPLAIN dieksekusi dengan pernyataan SELECT maka output EXPLAIN akan mengembalikan kolom berikut.

Column Description
Indo Ini menunjukkan pengidentifikasi kueri. Ini mewakili nomor urut kueri SELECT.
Pilih tipe Ini menunjukkan jenis kueri SELECT. Jenisnya bisa SIMPLE, PRIMARY, SUBQUERY, UNION, dll.
meja Ini menunjukkan nama tabel yang digunakan dalam kueri.
partisi Ini menunjukkan partisi dari tabel yang dipartisi yang diperiksa.
Tipe Ini menunjukkan tipe GABUNG atau tipe akses tabel.
kemungkinan_kunci Ini menunjukkan kunci yang dapat digunakan oleh MySQL untuk menemukan baris dari tabel.
kunci Ini menunjukkan indeks yang digunakan oleh MySQL.
kunci_len Ini menunjukkan panjang indeks yang akan digunakan oleh pengoptimal kueri.
ref Ini menunjukkan kolom atau konstanta yang dibandingkan dengan indeks yang disebutkan di kolom kunci
baris Ini menunjukkan daftar catatan yang diperiksa.
tersaring Ini menunjukkan perkiraan persentase baris tabel yang akan difilter berdasarkan kondisi.
tambahan Ini menunjukkan informasi tambahan mengenai rencana eksekusi kueri.

Misalkan Anda memiliki dua tabel terkait bernama customers dan orders dalam database bernama company. Pernyataan SQL yang diperlukan untuk membuat database dan tabel dengan data diberikan di bawah ini.

CREATE DATABASE company;

USE company;

CREATE TABLE customers (
id INT(5) AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
mobile_no VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL) ENGINE = INNODB;

CREATE TABLE orders (
id VARCHAR(20) PRIMARY KEY,
order_date date,
customer_id INT(5) NOT NULL,
delivery_address VARCHAR(50) NOT NULL,
amount INT(11),
FOREIGN KEY (customer_id) REFERENCES customers(id))
ENGINE = INNODB;

INSERT INTO customers values
(NULL,'Johnathan', '18477366643', '[email protected]'),
(NULL,'Musfiqur Rahman', '17839394985','[email protected]'),
(NULL,'Jimmy','14993774655', '[email protected]');

INSERT INTO orders value
('1937747', '2020-01-02', 1, 'New Work', 1000),
('8633664', '2020-02-12', 3, 'Texas', 1500),
('4562777', '2020-02-05', 1, 'California', 800),
('3434959', '2020-03-01', 2, 'New Work', 900),
('7887775', '2020-03-17', 3, 'Texas', 400);

Jalankan pernyataan berikut untuk melihat daftar rekor saat ini: customers meja.

SELECT * FROM customers;

Jalankan pernyataan berikut untuk melihat daftar rekor saat ini: orders meja.

SELECT * FROM orders;

Penggunaan pernyataan EXPLAIN sederhana:

Pernyataan SQL berikut akan mengembalikan kata kunci dari pernyataan EXPLAIN dari kueri SELECT sederhana yang mengambil semua catatan dari tabel pelanggan.

EXPLAIN SELECT * FROM customers G;

Output berikut akan muncul setelah menjalankan pernyataan. Ini adalah kueri tabel tunggal dan tidak ada klausa khusus seperti GABUNG, UNION, dll. yang digunakan dalam kueri. Untuk itu, nilaiselect_type adalah SIMPLE. Tabel pelanggan hanya berisi tiga catatan, itu sebabnya nilairows adalah 3. Nilai yang difi
lter adalah 100% karena semua record dari tabel diambil.

Penggunaan EXPLAIN dalam kueri SELECT dengan JOIN:

Pernyataan EXPLAIN berikut diterapkan dalam kueri SELECT dari dua tabel dengan klausa JOIN dan kondisi WHERE.

EXPLAIN SELECT customers.name, orders.order_date, orders.amount
FROM customers
JOIN orders ON (customers.id = orders.customer_id)
WHERE customers.name = 'Johnathan' G

Output berikut akan muncul setelah menjalankan pernyataan. Di Sini,select_typeadalah SEDERHANA untuk kedua tabel. Dua tabel dihubungkan oleh hubungan satu ke banyak.primary key dari customers meja digunakan sebagai a foreign key dari ordersmeja. Untuk itu, nilaipossible_keys untuk baris kedua adalah customer_id. Nilai yang difilter adalah33% untuk customers meja karena ‘Johnathan’adalah entri pertama dari tabel ini dan tidak perlu mencari lagi. Nilai yang difilter dariorders meja adalah 100% karena semua nilai orders tabel yang diperlukan untuk memeriksa untuk mengambil data.

Ada peringatan dalam output dari pernyataan di atas. Pernyataan berikut digunakan untuk melihat kueri yang dijalankan setelah membuat perubahan apa pun oleh Pengoptimal Kueri atau memeriksa alasan error jika terjadi error setelah menjalankan kueri.

SHOW WARNINGS G

Tidak ada error dalam kueri. Output menunjukkan kueri yang dimodifikasi yang dieksekusi.

Penggunaan EXPLAIN untuk mengetahui error kueri SELECT:

Kueri SELECT yang digunakan dalam pernyataan EXPLAIN berikut ini berisi galat. Format tanggal yang didukung oleh MySQL adalah ‘YYYY-MM-DD‘. Tetapi dalam kondisi WHERE kueri ini, nilai tanggal diberikan sebagai ‘DD-MM-YYYY‘ itu salah.

EXPLAIN SELECT customers.name, orders.order_date, orders.amount
FROM customers
JOIN orders ON (customers.id = orders.customer_id)
WHERE orders.order_date = '10-10-2020' G

Output berikut akan muncul setelah menjalankan pernyataan. Ini akan menampilkan dua peringatan. Salah satunya adalah default yang dijelaskan dalam contoh sebelumnya dan yang lainnya adalah untuk error tanggal yang disebutkan sebelumnya.

Jalankan pernyataan untuk melihat error.

SHOW WARNINGS G

Output menunjukkan error dengan jelas dengan pesan error dan nama kolom.

Penggunaan EXPLAIN dalam kueri SELECT dengan operator UNION ALL:

Operator UNION ALL digunakan dalam kueri SELECT untuk mengambil semua nilai kolom yang cocok dengan duplikat dari tabel terkait. Pernyataan berikut akan menampilkan output EXPLAIN dari penerapan operator UNION ALL antara:customers dan orders tabel.

EXPLAIN SELECT id as ID
FROM customers
UNION ALL
SELECT customer_id as ID
FROM orders G

Output berikut akan muncul setelah menjalankan pernyataan. Disini nilaiselect_type adalah UNION untuk baris kedua dari output dan nilai Extra< /strong> adalah indeks.

Kesimpulan:

Penggunaan pernyataan EXPLAIN yang sangat sederhana ditunjukkan dalam artikel ini. Tetapi pernyataan ini dapat digunakan untuk menyelesaikan berbagai masalah database yang rumit dan mengoptimalkan database untuk kinerja yang lebih baik.

Related Posts