Mengapa innodb tidak menyimpan penunjuk baris dalam indeks sekunder/bukan berkelompok?
P粉038161873
P粉038161873 2023-09-11 17:28:42
0
1
612

Seperti yang kita semua tahu, innodb hanya menyimpan nilai kunci primer dalam indeks sekunder, yang bermaksud kita perlu melintasi pepohon indeks B+ berkelompok sekali lagi untuk mendapatkan rekod baris.

Mengapa tidak menyimpan penunjuk baris terus dalam indeks kedua untuk mengurangkan kerja carian tambahan?

P粉038161873
P粉038161873

membalas semua(1)
P粉469090753

Tiada "penunjuk baris". Lajur PRMARY KEY mempunyai fungsi untuk mencari baris dalam BTree data.

Sudah tentu, carian melalui PK boleh dikatakan lebih perlahan daripada "penunjuk baris". Tetapi kemas kini, pemadaman, pemisahan blok, dll. semuanya dikendalikan secara automatik. (Lihat ulasan Bill.) Ini menjadikan kod lebih mudah. Dan, dalam beberapa kes, lebih cepat.

Contoh mudah yang lebih pantas: Diberi

PRIMARY KEY(id),
INDEX(foo)   -- effectively (foo, id), as discussed above

SELECT id FROM tbl WHERE foo = 123;

Dalam contoh ini, BTree yang diindeks mempunyai jawapan lengkap; tidak perlu mengakses data BTree. Oleh itu, indeks ini dipanggil "penutup" ini SELECT.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan