index e foreign key | La nostra community

Topic: Pubblico - Composto da 1 Post di 1 Utente.

24 Giugno, 2011 12:17 #1
lu
Utente

lu
Registrato: Jun, 2011
Posts: 1
Offline

ciao,

ho un db con le seguenti tabelle

CREATE TABLE model (
id integer NOT NULL,
name varchar(75) NOT NULL,
manufacturerid integer NOT NULL,

CONSTRAINT model_pkey PRIMARY KEY (id),
CONSTRAINT fk_model_manufacturer
FOREIGN KEY (manufacturerid) REFERENCES manufacturer(id)
)ENGINE = InnoDB
CHARACTER SET utf8;

CREATE TABLE manufacturer (
id integer NOT NULL,
name varchar(75) NOT NULL,
active tinyint DEFAULT true,

CONSTRAINT manufacturer_pkey PRIMARY KEY (id)
)ENGINE = InnoDB
CHARACTER SET utf8;

e i seguenti indexes

CREATE INDEX manufacturer_ix_name ON manufacturer (name);
CREATE INDEX model_ix_name ON model (name);

Se eseguo la seguente select l'index viene usato

explain SELECT id, name FROM model WHERE name='myn';

..."Using where; Using index" e non viene quindi fatto il full scan.

Invece se eseguo

explain SELECT id, name, manufacturerid FROM model WHERE name='myn';

ovvero aggiungo il manufacturerid che è FK, gli indici vengono ignorati.

Come faccio a fare in modo che anche nel secondo caso venga usato un index (la FK non può essere rimossa e neanche la query può essere modificata) ?

grazie

Condividi su:

Loggati o Registrati per replicare