Indizes auf primary und foreign keys

Ich habe eine Datenbank erstellt mit einem GUI-tool und ich habe bemerkt, was scheint, eine inkonsistente Verwendung von KEY (aka INDEX) Definitionen:

CREATE TABLE `foo_bar` (
  `foo_id` int(10) unsigned NOT NULL,
  `bar_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`foo_id`, `bar_id`),
  KEY `foo_bar_fk2` (`bar_id`), -- <== ???
  CONSTRAINT `foo_bar_fk1` FOREIGN KEY (`foo_id`) REFERENCES `foo` (`foo_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `foo_bar_fk2` FOREIGN KEY (`bar_id`) REFERENCES `bar` (`bar_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci COMMENT='Links between Foo and Bar';

Habe ich die folgenden Fragen zu Indizes:

  1. Ist es notwendig, explizit zu definieren, die Indizes für primär-und Fremdschlüssel?
  2. Wenn es nicht, tun Sie tatsächlich bekommen zwei Indizes (und weniger Leistung)?
  3. Ist es anders in InnoDB-und MyISAM - (foreign keys abgesehen)?
InformationsquelleAutor | 2010-08-20
Schreibe einen Kommentar