Rumah  >  Soal Jawab  >  teks badan

Mengapa innodb tidak menyimpan penunjuk baris dalam indeks sekunder/bukan berkelompok?

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粉038161873P粉038161873404 hari yang lalu552

membalas semua(1)saya akan balas

  • P粉469090753

    P粉4690907532023-09-12 16:06:28

    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.

    balas
    0
  • Batalbalas