Odpowiedź zależy od używanego silnika:
- MyISAM - dodanie id do indeksu może i prawdopodobnie pomoże
- InnoDB — klucz podstawowy jest już częścią każdego indeksu dodatkowego, ponieważ innodb przechowuje wiersze w BTREE posortowane według klucza podstawowego, a indeks musi wskazywać na bieżący wiersz — w takim przypadku dodanie go jest zbędne, jeśli jest on ostatnim w indeksie ( ale zrobienie tego nie doda tego dwa razy, więc nie powinno to pogorszyć sprawy). W niektórych przypadkach możesz chcieć dodać go jako nie-ostatni, lub masz wielokolumnowy podstawowy i dodajesz kilka kolumn do swojego indeksu w innej kolejności - nie powinno być z tym problemu, innodb dołączy pozostałe kolumny podstawowego do tego indeksu, ale może używać tych dodanych wcześniej bez ich duplikowania)
Więc odpowiedzi:
- W InnoDB jest to niepotrzebne, w MyISAM jest to dobre w przypadku, gdy faktycznie używasz tego sortowania, jeśli go nie używasz, dodanie go tylko zwiększa ten indeks.
- Kolejność kolumn w definicji tabeli i kolejność w indeksie to odrębne rzeczy, więc jest OK
- Tak, ten indeks wydaje się naprawdę dobry – ale możesz to sprawdzić za pomocą WYJAŚNIJ , istnieje możliwość jeszcze lepszej wydajności - "indeks pokrycia ”, ale wiąże się to z pewnymi kosztami, więc chyba że zapytanie jest krytyczne i nieskuteczne, prawdopodobnie jest to przesada.