Dalam mysql, pelan pelaksanaan ialah satu set alatan yang disediakan oleh pangkalan data kepada pengguna untuk menghuraikan, menganalisis dan mengoptimumkan pernyataan SQL. Fungsi pelan pelaksanaan adalah: 1. Memaparkan susunan bacaan jadual; 3. Memaparkan indeks yang boleh digunakan; Hubungan rujukan antara mereka; 6. Paparkan bilangan baris pertanyaan dalam setiap jadual.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Apabila menanyakan pangkalan data, kami biasanya menggunakan pernyataan sql untuk menanyakan data yang kami perlukan. Walau bagaimanapun, kami tidak tahu bagaimana SQL dilaksanakan dalam pangkalan data, sama ada ia menggunakan indeks, indeks mana yang digunakan, medan dan jadual mana yang dicari, susunannya, berapa lama masa yang diambil, dsb., jadi Adakah terdapat cara untuk melihat maklumat ini? MySQL menyediakan satu set alat - rancangan pelaksanaan.
Pelan pelaksanaan ialah satu set alat yang disediakan oleh pangkalan data untuk menghuraikan, menganalisis dan mengoptimumkan pernyataan SQL fungsi berikut Fungsi:
Paparkan susunan bacaan jadual; >
Indeks yang manakah boleh digunakan;Menggunakan pelan pelaksanaan adalah sangat mudah, hanya tambahkan kata kunci yang menerangkan di hadapan SQL untuk dilaksanakan.
3.1, id
pilih pertanyaan nombor siri Jika id adalah sama, susunan pelaksanaan adalah dari atas ke bawah jika id adalah berbeza, lebih besar nilai id akan diberi keutamaan Semakin tinggi tahap, lebih awal ia dilaksanakan;select_type: Menunjukkan jenis pernyataan pilih, yang boleh mempunyai nilai berikut; . ; KESATUAN BERGANTUNG: dalam KESATUAN Pernyataan SELECT kedua atau seterusnya bergantung pada pertanyaan luaran; pertanyaan;
SUBQUERY : Pernyataan SELECT pertama dalam subquery; pertanyaan luaran; DIRI: PILIH (subkueri daripada klausa FROM).
3.3, jadual
jadual: mewakili nama jadual pertanyaan, yang boleh berada dalam situasi berikut :
Memaparkan nama jadual jika alias diberikan, alias dipaparkan
jenis: Lajur ini mewakili jenis perkaitan jadual atau jenis akses, iaitu pangkalan data menentukan cara mencari item dalam jadual. Cari julat anggaran rekod baris data. Daripada yang optimum kepada yang paling teruk, ia adalah: sistem > const > jadual, yang agak Untuk jadual sistem, ini adalah lajur khas jenis const, yang biasanya tidak muncul dan boleh diabaikan; baris data, jadi ia sangat pantas dan sering digunakan Untuk pertanyaan tentang PRIMARY KEY atau indeks UNIK, boleh difahami bahawa const dioptimumkan
eq_ref: imbasan indeks unik, untuk setiap; kunci indeks, hanya terdapat satu rekod dalam jadual dengannya Padanan, kunci utama yang biasa digunakan atau imbasan indeks unik, ini mungkin jenis gabungan terbaik selain const; imbasan indeks unik, mengembalikan padanan nilai tunggal Semua baris lajur yang diindeks untuk =,
julat: Hanya dapatkan semula baris dalam julat tertentu dan gunakan indeks untuk memilih baris Ia biasanya digunakan untuk pertanyaan seperti antara, , dalam, dll. Pertanyaan julat ini ialah. lebih baik daripada indeks. Kerana ia hanya perlu mengimbas satu titik indeks dan berakhir pada satu titik yang lain; >
semua: iaitu Imbasan jadual penuh bermakna pangkalan data perlu mencari baris yang diperlukan dari awal hingga akhir. Biasanya ini memerlukan penambahan indeks untuk pengoptimuman.yang boleh digunakan oleh pertanyaan untuk dicari. Apabila menerangkan, mungkin terdapat situasi di mana possible_keys mempunyai lajur, tetapi kekunci memaparkan NULL Ini kerana tidak terdapat banyak data dalam jadual, dan pangkalan data berpendapat bahawa indeks tidak membantu untuk pertanyaan ini, jadi ia memilih yang penuh. pertanyaan jadual. Jika lajur adalah NULL, tiada indeks yang berkaitan. Dalam kes ini, anda boleh menyemak klausa where untuk melihat sama ada anda boleh mencipta indeks yang sesuai untuk meningkatkan prestasi pertanyaan, dan kemudian gunakan explain untuk melihat kesannya.
3.7, kunci
yang pangkalan data sebenarnya memutuskan untuk digunakan. Jika tiada indeks dipilih, nilai kunci adalah NULL. Indeks boleh dipaksa untuk digunakan atau diabaikan. 3.8, key_len
key_len: Lajur ini menunjukkan bilangan baityang digunakan oleh pangkalan data dalam indeks Nilai ini boleh digunakan untuk mengira penggunaan indeks yang tertentu lajur, pengiraan berangka adalah seperti berikut: Jenis rentetan
char(n): n byte lengthvarchar(n): 2 bait panjang rentetan simpanan, jika utf-8 , maka panjangnya ialah 3n 2
jenis angka tinyint: 1 bait smallint: 2 bait
int: 4 bait bigint: 8 bait
Jenis masa
cap masa: 4 bait
masa tarikh: 8 bait
Jika medan membenarkan NULL, 1 bait diperlukan untuk merekodkan sama ada NULL
3.9, ref
ref: Lajur ini menunjukkan
nilai carian jadual dalam indeks rekod lajur utama Lajur atau pemalar, yang biasa ialah: const (malar), func, null, nama medan (contoh: film.id) 3.10, baris
baris: Lajur ini ialah
bilangan baris yang dianggarkan dibaca dan diimbas oleh pangkalan dataAmbil perhatian bahawa ini bukan bilangan baris dalam set hasil, jadi semakin kecil nilainya, lebih baik . 3.11, ditapis
ditapis: Kembalikan bilangan baris dalam hasil
sebagai peratusan bilangan baris dibaca, lebih tinggi nilai Lebih besar lebih baik. 3.12, Tambahan
tambahan: Lajur ini memaparkan
maklumat tambahan, yang tidak disertakan dalam lajur lain Maklumat , nilai khusus adalah seperti berikut: berbeza: Selepas pangkalan data menemui baris pertama yang sepadan, ia berhenti mencari lebih banyak baris untuk gabungan baris semasa; >
tidak wujud: Pangkalan data boleh melakukan pengoptimuman LEFT JOIN pada pertanyaan Selepas mencari baris yang sepadan dengan standard LEFT JOIN, tiada lagi baris akan disemak dalam jadual untuk gabungan baris sebelumnya 🎜>julat diperiksa untuk setiap rekod (peta indeks: #): Pangkalan data tidak menemui indeks yang baik yang boleh digunakan, tetapi mendapati bahawa jika nilai lajur daripada jadual sebelumnya diketahui, ia mungkin sebahagiannya Indeks boleh digunakan;
menggunakan failsort (titik utama): pangkalan data akan menggunakan indeks luaran untuk mengisih keputusan, bukannya membaca baris daripada jadual dalam susunan indeks. Pada masa ini, mysql akan menyemak imbas semua rekod yang layak mengikut jenis sambungan, menyimpan kata kunci pengisihan dan penunjuk baris, dan kemudian mengisih kata kunci dan mendapatkan maklumat baris mengikut tertib. Dalam kes ini, secara amnya perlu mempertimbangkan
menggunakan indeks untuk mengoptimumkan
menggunakan sementara (titik utama): Pangkalan data perlu mencipta jadual sementara untuk mengendalikan pertanyaan Situasi ini biasa mengikut urutan dan kumpulan mengikut. Apabila ini berlaku, pengoptimuman biasanya perlu dilakukan ialah menggunakan indeks untuk mengoptimumkan; barisan. Iaitu membaca keseluruhan data dahulu, dan kemudian menyemak mengikut keadaan di mana Jika ia sepadan, ia akan disimpan, jika ia tidak sepadan, ia akan dibuang; menggunakan keadaan indeks: serupa dengan Menggunakan where, lajur pertanyaan Tidak diliputi sepenuhnya oleh indeks, keadaan where ialah julat lajur utama; ), Menggunakan kesatuan(...), Menggunakan intersect(.. .): Fungsi ini menggambarkan cara menggabungkan imbasan indeks untuk jenis gabungan index_merge
menggunakan indeks untuk kumpulan mengikut: Sama seperti menggunakan kaedah indeks untuk mengakses jadual, Menggunakan indeks untuk kumpulan mengikut bermakna pangkalan data telah menemui indeks yang boleh digunakan untuk membuat pertanyaan kumpulan oleh atau Semua lajur, jangan cari cakera keras untuk mengakses jadual sebenar. lajur utama indeks, yang bermaksud bahawa indeks digunakan, tetapi beberapa medan tidak diliputi oleh indeks dan mesti dilaksanakan melalui "pulangan jadual". jika indeks digunakan tetapi operasi pemulangan jadual diperlukan, operasi pemulangan jadual harus dielakkan.
[Cadangan berkaitan:
tutorial video mysqlAtas ialah kandungan terperinci Apakah rancangan pelaksanaan dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!