sql >> Database >  >> RDS >> Mysql

Is er enig voordeel aan het hebben van een automatisch oplopende primaire sleutel in een MySQL-draaitabel?

Berichten en categorieën zijn waarschijnlijk veel-op-veel, niet één-op-veel.

Een veel-op-veel-relatietabel kun je het beste doen als

CREATE TABLE a_b (
a_id ... NOT NULL,
b_id ... NOT NULL,
PRIMARY KEY (a_id, b_id),
INDEX(b_id, a_id) -- include this if you need to go both directions
) ENGINE = InnoDB;

Daarmee krijg je automatisch "geclusterde" zoekopdrachten in beide richtingen en vermijd je de onnodige kunstmatige id voor de tabel.

(Trouwens, N.B., een impliciete PK is 6 bytes, niet 8. Er is een lange post van Jeremy Cole over dit onderwerp.)

Een een-op-veel-relatie heeft deze extra tabel niet nodig. Plaats in plaats daarvan één id in de andere tabel. Een stad-tabel zal bijvoorbeeld de id voor het land bevatten.



  1. Resultaten beperken in MySQL, PostgreSQL en SQLite

  2. Hoe datagrid in WPF te vernieuwen

  3. Fout in MySQL-verbinding bij toegang tot een externe server

  4. Laravel-querybuilder - hergebruik query met gewijzigde waar-instructie