Artikel ini membawakan anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan isu berkaitan tentang explain Perintah explain digunakan terutamanya untuk melihat pelan pelaksanaan penyata SQL Adakah anda menggunakan indeks atau melakukan imbasan jadual penuh. Saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial mysql
Perintah explain digunakan terutamanya untuk melihat pelan pelaksanaan pernyataan SQL dan semak sama ada pernyataan SQL telah digunakan Indeks, sama ada terdapat imbasan jadual penuh, dsb. Ia boleh mensimulasikan pengoptimum untuk melaksanakan pernyataan pertanyaan SQL untuk mengetahui cara MySQL mengendalikan pernyataan SQL pengguna.
Melalui pernyataan explain, kita boleh menganalisis keputusan berikut
表的读取顺序 | 数据读取操作的操作类型 |
---|---|
表之间的引用 | 哪些索引可以使用 |
每张表有多少行被优化器查询 | 哪些索引被实际使用 |
Penggunaan: terangkan pernyataan SQL;
MariaDB [class_info]> explain select * from student; +--+-----------+-------+----+-------------+-----+-------+-----+----+-----+ |id|select_type| table |type|possible_keys| key |key_len| ref |rows|Extra| +--+-----------+-------+----+-------------+-----+-------+-----+----+-----+ | 1| SIMPLE |student| ALL| NULL | NULL| NULL | NULL| 1 | | +--+-----------+-------+----+-------------+-----+-------+-----+----+-----+ 1 row in set (0.00 sec)
Ringkasan perihalan:
id
ialah nombor urutan pertanyaan pilih, termasuk set nombor, yang menunjukkan pelaksanaan klausa pilih dalam pertanyaan atau Susunan jadual operasi. Hasil id mempunyai tiga situasi berikut:
● Id adalah sama, susunan pelaksanaan adalah dari atas ke bawah, tanpa mengira susunan dalam sql
● Jika ia adalah kanak-kanak Untuk pertanyaan, nombor siri id akan meningkat Lebih besar id, lebih tinggi keutamaan dan lebih awal ia akan dilaksanakan dalam semua kumpulan, lebih besar id nilai, semakin tinggi keutamaan dan yang pertama dilaksanakan.
3.2 select_typeMemaparkan jenis setiap klausa pilih dalam pertanyaan yang biasa digunakan jenis select_type termasuk mudah dan primer , subquery , terbitan, kesatuan, hasil kesatuan
(pilihan mudah, tidak menggunakan sebarang pertanyaan rumit seperti kesatuan atau subquery)select_type
(2)
utama(Pertanyaan paling luar dalam subkueri, jika pertanyaan mengandungi mana-mana subbahagian kompleks, pilihan paling luar ditandakan sebagai utama)
(3)
subkueri(subkueri disertakan dalam senarai pilih atau di mana)
(4)diperoleh (daripada Subkueri yang terkandung dalam senarai ditandakan sebagai terbitan . MySQL akan melaksanakan subquery ini secara rekursif dan meletakkan keputusan dalam jadual sementara) Pernyataan pilih kedua atau seterusnya)
(6)
hasil kesatuan( Keputusan kesatuan, pilihan kedua dalam pernyataan kesatuan memulakan semua pilihan berikut)
jadual 3.3Paparkan nama jadual dalam pangkalan data yang diakses dalam langkah ini (paparkan jadual mana data dalam baris ini adalah mengenai jadual).
jenis 3.4
● table
semua
type
●
: Imbasan Indeks Penuh, perbezaan antara indeks dan SEMUA ialah jenis indeks hanya melintasi pokok indeks
●
julat: hanya mengambil baris dalam julat tertentu, Gunakan indeks untuk memilih baris
●
ref: Menunjukkan syarat padanan gabungan jadual di atas, iaitu lajur yang mana atau pemalar digunakan untuk mencari lajur indeks Nilai
●
eq_ref: sama dengan ref, perbezaannya ialah indeks yang digunakan adalah unik indeks, dan untuk setiap nilai kunci indeks, hanya terdapat satu dalam jadual Pemadanan rekod, secara ringkasnya, ialah menggunakan kunci primer atau kunci unik sebagai keadaan perkaitan dalam sambungan berbilang jadual ●
const , sistem: Apabila MySQL mengoptimumkan bahagian tertentu pertanyaan dan menukarnya kepada Pemalar diakses menggunakan jenis ini. Jika kunci utama diletakkan dalam senarai tempat, MySQL boleh menukar pertanyaan kepada pemalar Sistem ialah kes khas jenis const apabila jadual pertanyaan hanya mempunyai satu baris.
●
NULL: MySQL menguraikan pernyataan semasa proses pengoptimuman, tanpa mengakses jadual atau indeks semasa pelaksanaan, seperti memilih nilai minimum daripada lajur indeks Ini boleh dilakukan melalui carian indeks yang berasingan.
3.5 possible_keysMenunjukkan satu atau lebih indeks yang mungkin digunakan pada jadual ini. Jika indeks wujud pada medan yang terlibat dalam pertanyaan, indeks akan disenaraikan
tetapi sebenarnya tidak boleh digunakan oleh pertanyaan . (Indeks yang boleh digunakan oleh pertanyaan ini, batal jika tiada indeks)
key
Memaparkan kunci (indeks) yang MySQL benar-benar memutuskan untuk digunakan, yang mesti disertakan dalam kekunci_mungkin. NULL jika tiada indeks dipilih. Untuk memaksa MySQL menggunakan atau mengabaikan indeks pada lajur possible_keys, gunakan force index
, use index
atau ignore index
dalam pertanyaan.
key_len
mewakili bilangan bait yang digunakan dalam indeks Lajur ini boleh digunakan untuk mengira panjang indeks yang digunakan dalam pertanyaan (nilai yang dipaparkan oleh key_len ialah medan indeks Panjang maksimum yang mungkin bukan panjang sebenar yang digunakan, iaitu key_len dikira berdasarkan definisi jadual, bukan diambil daripada jadual), dalam 不损失精确性的情况下,长度越短越好
.
ref
Paparkan lajur indeks yang digunakan, menunjukkan keadaan padanan sambungan jadual di atas, iaitu , lajur atau pemalar yang manakah Digunakan untuk mencari nilai pada lajur indeks
rows
Anggaran bilangan baris dalam hasil set, menunjukkan bahawa MySQL berdasarkan jadual Maklumat statistik dan pemilihan indeks, dan anggaran bilangan baris yang perlu dibaca untuk mencari rekod yang diperlukan.
Extra
Lajur ini mengandungi butiran penyelesaian pertanyaan MySQL, terdapat situasi berikut:
Apabila lajur yang diminta semuanya adalah sebahagian daripada indeks yang sama, ini bermakna pelayan MySQL akan menapis baris selepas enjin storan mendapatkannya
● Menggunakan sementara bermakna MySQL perlu menggunakan jadual sementara untuk penyimpanan Set hasil biasanya digunakan dalam menyusun dan mengumpulkan pertanyaan kumpulan biasa mengikut; dilengkapkan menggunakan indeks, ia dipanggil " Pengisihan fail"
● Menggunakan penimbal gabunganNilai yang diubah menekankan bahawa tiada indeks digunakan semasa mendapatkan syarat gabungan dan penimbal gabungan diperlukan untuk menyimpan hasil perantaraan. Jika nilai ini muncul, perlu diperhatikan bahawa bergantung pada syarat khusus pertanyaan, anda mungkin perlu menambah indeks untuk meningkatkan prestasi.
● Mustahil di mana Nilai ini menekankan bahawa pernyataan where tidak akan menghasilkan baris yang layak (hasil yang tidak boleh wujud dengan mengumpul statistik).
● Pilih jadual yang dioptimumkan Nilai ini bermakna dengan menggunakan indeks sahaja, pengoptimum boleh mengembalikan hanya satu baris daripada hasil fungsi agregat
● Tidak jadual digunakan Pernyataan Query menggunakan daripada dwi atau tidak mengandungi mana-mana daripada klausa
4. Ringkasan
● explain tidak akan memberitahu anda maklumat tentang pencetus, prosedur tersimpan atau pengguna Kesan fungsi tersuai pada pertanyaan● explain tidak boleh memaparkan kerja pengoptimuman yang dilakukan oleh MySQL apabila melaksanakan pertanyaan
● explain hanya boleh Explain operasi pilih dan operasi lain hendaklah ditulis semula sebagai pilih untuk melihat pelan pelaksanaan
● Beberapa maklumat statistik dianggarkan, bukan nilai tepat
Pembelajaran yang disyorkan:
tutorial video mysql
Atas ialah kandungan terperinci Penjelasan terperinci tentang menerangkan penggunaan untuk pembelajaran MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!