sql >> Databáze >  >> RDS >> Mysql

Měli bychom zahrnout třídicí sloupec, primární klíč na složený index (MySQL)

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:

  1. 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ší.
  2. Pořadí sloupců v definici tabulky a pořadí v indexu jsou samostatné věci, takže je to v pořádku
  3. 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ý.



  1. aktualizovat, pokud existují dvě pole, vložit, pokud ne (MySQL)

  2. Použití předchozí datové složky MySQL na nové instalaci MySQL

  3. MySQL vybírá záznamy před 1 hodinou nebo novější ve sloupci datetime

  4. Jak vybrat každý n-tý řádek v mySQL počínaje n