Odpověď závisí na motoru, který používáte:
- MyISAM – přidání id do indexu může a pravděpodobně pomůže
- InnoDB – Primární klíč je již součástí každého sekundárního indexu, protože innodb ukládá řádky v BTREE seřazené podle primárního klíče a index potřebuje primární, aby ukazoval na aktuální řádek – v takovém případě je jeho přidání nadbytečné, pokud je v indexu poslední ( ale tím to nepřidá dvakrát, takže by to nemělo situaci zhoršit). V některých případech jej možná budete chtít přidat jako neposlední nebo máte vícesloupcové primární a přidáte některé sloupce do svého indexu v jiném pořadí – neměl by s tím být žádný problém, innodb k tomuto indexu připojí zbývající primární sloupce, ale můžete použít ty, které byly přidány dříve, aniž byste je duplikovali)
Takže odpovědi:
- V InnoDB je to zbytečné, v MyISAM je to dobré v případě, že to řazení skutečně používáte, pokud ho nepoužíváte, přidáním se index jen zvětší.
- Pořadí sloupců v definici tabulky a pořadí v indexu jsou samostatné věci, takže je to v pořádku
- Ano, ten index se zdá být opravdu dobrý – ale můžete se sami zkontrolovat pomocí VYSVĚTLIT , existuje možnost ještě lepšího výkonu - "krycí index “, ale to je spojeno s náklady, takže pokud dotaz není kritický a má nedostatečnou výkonnost, je pravděpodobně přehnaný.