Motorul de masă Innodb are un număr de nuanțe atunci când lucrează cu cheile primare (chei primare). Cunoașterea acestor nuanțe va ajuta la utilizarea mai eficientă a resurselor de fier.
Clustere indexuri
În Innodb, cheia primară este clustered. Aceasta înseamnă că întreaga înregistrare este stocată cu această cheie. Acest lucru vă permite să profitați de citirea cheii primare - pentru a obține toate datele există o singură operație de căutare.
Tabele fără cheie primară
Innodb nu poate să nu fie cheia primară. Dacă nu-l specificați, Mysql o va face pentru dvs. În primul rând, Mysql va încerca să ia primul indice unic (UNIQUE INDEX). Dacă nu funcționează - creați o coloană ascunsă (de 6 octeți) și alocați-o cheii primare.
Introducerea secvențială
Innodb stochează datele în pagini. Când creați înregistrări noi, pagina este completată aproape complet (lăsând puțin pentru posibile schimbări viitoare în interiorul paginii). Introducerea secvențială (cheia primară cu incrementare automată) asigură o bună umplere a paginilor și, ca rezultat, o performanță mai bună de introducere și citire.
Cheie primară și alți indicatori
Orice index stochează de asemenea valoarea cheii primare. Acest lucru vă permite să efectuați selecții eficiente de taste primare atunci când căutați alte indexuri fără o operație de căutare suplimentară.
Cel mai important
- În toate tabelele innodb, cheia primară trebuie să fie întotdeauna specificată explicit.
- Cheia primară ar trebui să fie cea mai mică coloană în dimensiune. Acest lucru va economisi o mulțime de spațiu, pentru că Valoarea cheii primare este stocată în fiecare index. Dacă aveți nevoie de smallint, nu utilizați int, etc.
- Utilizați-o ca coloană primară auto_increment - aceasta va reduce semnificativ fragmentarea paginilor și va crește viteza de scriere și citire. Mai ales nu este necesar să puneți cheia primară pe mai multe coloane. Este mai bine să utilizați coloana UNIQUE INDEX + auto_increment pentru PK.