Podczas tworzenia zrzutu mysql zawierający strukturę mojej bazy danych, jeden z tabel zawiera następujące informacje:Podstawowy klucz kontra kluczowego
CREATE TABLE `completedTransactions` (
`paymentId` int(10) unsigned NOT NULL,
`timestamp` int(15) unsigned NOT NULL,
`actionTaken` varchar(25) NOT NULL,
`response` varchar(255) NOT NULL,
`responseCode` int(5) NOT NULL,
PRIMARY KEY (`paymentId`,`timestamp`),
KEY `paymentId` (`paymentId`),
Klucz podstawowy jest to, czego się spodziewałem, ale jestem pewien, co ostatnia linia dotyczy?
KEY `paymentId` (`paymentId`),
Czy jest to związane z indeksem?
Zastanawiam się, dlaczego w tym przypadku, dodatkowy index jest tworzony na paymentId, ponieważ klucz podstawowy powinien być również indeksem. A więc, imho, dodatkowy indeks (klucz) jest przestarzały. –
@Frederik: Klucz podstawowy jest złożonym kluczem, więc jego indeks będzie oparty na tym. Podczas wyszukiwania tylko na podstawie 'paymentId', ten indeks może nie być przydatny. –
@Frederik Gheysels: Ponieważ zarówno 'paymentId' jak i' timestamp' należą do klucza podstawowego, indeks jest tworzony na obu polach. Więc można utworzyć dodatkowy indeks dla 'paymentId'. –