Anda dapat menggunakan sintaks EXPLAIN untuk melihat rencana eksekusi dari sebuah pernyataan SQL. Sebagai contoh, Anda dapat memeriksa apakah indeks digunakan secara efisien dalam pelaksanaan pernyataan kueri untuk mengoptimalkannya.
Mesin dan versi yang berlaku
Sintaks EXPLAIN berlaku untuk LindormTable dan LindormTSDB.
LindormTable versi 2.6.3 dan lebih baru mendukung rencana eksekusi dengan kedalaman berbeda.
Sintaks
explain_statement ::= EXPLAIN [ PLAN ] [ explain_depth_expression ]
[ FOR ] select_statement;
explain_depth_expression ::= { WITH TYPE | WITHOUT IMPLEMENTATION }Parameter
Kedalaman Rencana (explain_depth_expression)
Versi Lindorm SQL adalah 2.6.4 atau lebih baru. Untuk informasi lebih lanjut tentang cara melihat versi Lindorm SQL, lihat Versi SQL.
Rencana eksekusi yang dikembalikan oleh sintaks EXPLAIN memiliki kedalaman yang berbeda. Tabel berikut menjelaskan tiga tingkat kedalaman dan cara menentukannya dalam pernyataan.
Kedalaman | Ekspresi Kedalaman | Deskripsi |
Rencana Fisik | Tidak Berlaku | Rencana fisik yang dioptimalkan dan difilter oleh pengoptimal. |
Rencana Logis | WITHOUT IMPLEMENTATION | Rencana logis yang tidak dioptimalkan. |
Rencana Tipe | WITH TYPE | Rencana yang hanya berisi tipe setiap kolom dalam set hasil kueri. |
Pernyataan SELECT (select_statement)
Parameter select_statement dalam sintaks adalah pernyataan kueri yang rencana eksekusinya ingin Anda lihat.
Contoh
Dalam contoh-contoh berikut, tabel uji dibuat dengan mengeksekusi pernyataan berikut:
CREATE TABLE test (
p1 VARCHAR(255) NOT NULL,
c1 VARCHAR(255),
PRIMARY KEY (p1)
);Data ditulis ke beberapa kolom tabel uji dengan mengeksekusi pernyataan berikut:
INSERT INTO test (p1, c1) VALUES
('3abc9378', '10'),
('3def9378', NULL),
('3ghi1234', '15'),
('3jkl5678', NULL),
('3mno9378', '20'),
('3pqr0000', '25'),
('3stu9378', '30'),
('3vwx0000', NULL),
('3yz_9378', '35'),
('3_1239378', '40');Contoh berikut menunjukkan cara melihat rencana eksekusi dengan kedalaman berbeda untuk pernyataan kueri yang sama:
Lihat rencana fisik
EXPLAIN SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;Lihat rencana logis
EXPLAIN WITHOUT IMPLEMENTATION FOR SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;Lihat rencana tipe
EXPLAIN WITH TYPE FOR SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;