Rumah >pangkalan data >tutorial mysql >Apakah penggunaan prestasi pulangan jadual MySQL?
Sama ada indeks lajur tunggal atau indeks bersama, indeks sepadan dengan pokok indeks B+ bebas Nod pokok indeks hanya termasuk:
Nilai medan dalam indeks
Nilai kunci utama
Walaupun data yang diperlukan ialah ditemui mengikut syarat mengikut pepohon indeks, Ia hanya nilai dan nilai kunci utama beberapa medan dalam indeks Jika anda mencipta select *
, maka akan ada medan lain perlu kembali ke jadual dan mencari dalam indeks berkelompok berdasarkan kunci utama Indeks berkelompok Nod daun ialah halaman data Hanya dengan mencari halaman data boleh semua nilai medan bagi satu baris data .
Sama seperti
select * from table order by xx1,xx2,xx3
, anda perlu mendapatkan semula semua data mengikut susunan daripada pepohon indeks indeks bersama, dan kemudian melakukan carian indeks berkelompok kunci utama untuk setiap bahagian data tidak tinggi.
Kadang-kadang MySQL
enjin pelaksanaan mungkin berfikir bahawa jika anda seperti
select * from table order by xx1,xx2,xx3
ia adalah bersamaan dengan mengimbas semua data indeks bersama dan indeks berkelompok, jadi lebih baik tidak menggunakan sambungan index. , anda boleh mengimbas keseluruhan jadual secara langsung, jadi anda hanya perlu mengimbas satu indeks kunci utama.
Tetapi jika ia dalam bentuk:
select * from table order by xx1,xx2,xx3 limit 10
maka enjin pelaksanaan akan tahu bahawa anda mula-mula mengimbas pokok indeks indeks bersama, dapatkan 10 keping data , dan kemudian bandingkan 10 keping data dalam Hanya cari 10 kali dalam indeks berkelompok, maka indeks bersama masih akan digunakan.
Indeks dilindungi bukan indeks, tetapi kaedah berdasarkan pertanyaan indeks, iaitu, hanya beberapa medan dalam indeks bersama diperlukan untuk perkara seperti
rreee nilai, maka anda hanya perlu mengimbas pepohon indeks indeks bersama tanpa kembali ke jadual untuk mencari medan lain Kaedah pertanyaan ini ialah indeks penutup.
Jadi apabila anda menggunakan indeks bersama, perhatikan sama ada ia boleh menyebabkan sejumlah besar jadual kembali ke indeks berkelompok Jika bilangan jadual kembali ke indeks berkelompok adalah terlalu banyak, anda mungkin diimbas secara langsung jadual penuh tanpa menggunakan indeks bersama.
Seboleh-bolehnya, nyatakan hanya medan yang anda perlukan dalam SQL dan bukannya kekerasan select *
Sebaiknya pergi terus ke indeks penutup.
Walaupun tidak dapat dielakkan untuk kembali ke jadual, anda harus menggunakan limit
dan where
untuk mengehadkan bilangan pulangan jadual sebanyak mungkin, menapis sebilangan kecil data daripada indeks bersama, dan kemudian kembali ke meja. Ini akan mempunyai prestasi yang lebih baik.
Atas ialah kandungan terperinci Apakah penggunaan prestasi pulangan jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!