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

Rozdíly mezi INDEX, PRIMARY, UNIQUE, FULLTEXT v MySQL?

Rozdíly

  • KEY nebo INDEX odkazuje na normální nejedinečný index. Nerozlišné hodnoty pro index jsou povoleny, takže index může obsahovat řádky se stejnými hodnotami ve všech sloupcích indexu. Tyto indexy nevynucují žádná omezení na vaše data, takže se používají pouze pro přístup – pro rychlé dosažení určitých rozsahů záznamů bez skenování všech záznamů.

  • JEDINEČNÉ odkazuje na index, kde všechny řádky indexu musí být jedinečné. To znamená, že stejný řádek nemusí mít stejné hodnoty než NULL pro všechny sloupce v tomto indexu jako jiný řádek. Kromě toho, že se UNIQUE indexy používají k rychlému dosažení určitých rozsahů záznamů, lze je použít k vynucení omezení dat, protože databázový systém neumožňuje porušení pravidla odlišných hodnot při vkládání nebo aktualizaci dat.

    Váš databázový systém může povolit použití UNIQUE indexu na sloupce, které povolují hodnoty NULL, v takovém případě mohou být dva řádky identické, pokud oba obsahují hodnotu NULL (důvodem je, že NULL není považováno za stejné). V závislosti na vaší aplikaci však můžete považujte to za nežádoucí:pokud tomu chcete zabránit, měli byste v příslušných sloupcích zakázat hodnoty NULL.

  • PRIMÁRNÍ funguje přesně jako UNIKÁTNÍ index, kromě toho, že je vždy pojmenován 'PRIMARY' a v tabulce může být pouze jeden (a tam by měl být vždy jeden; ačkoli to některé databázové systémy nevynucují). PRIMÁRNÍ index je zamýšlen jako primární prostředek k jednoznačné identifikaci libovolného řádku v tabulce, takže na rozdíl od UNIQUE by neměl být použit na žádné sloupce, které umožňují hodnoty NULL. Váš PRIMÁRNÍ index by měl být na nejmenším počtu sloupců, které jsou dostatečné k jednoznačné identifikaci řádku. Často se jedná pouze o jeden sloupec obsahující jedinečné automaticky navýšené číslo, ale pokud existuje něco jiného, ​​co může jednoznačně identifikovat řádek, například „kód země“ v seznamu zemí, můžete místo toho použít toto.

    Některé databázové systémy (jako například InnoDB od MySQL) uloží záznamy tabulky na disk v pořadí, v jakém se objeví v PRIMARY indexu.

  • FULLTEXT indexy se liší od všech výše uvedených a jejich chování se mezi databázovými systémy výrazně liší. FULLTEXTOVÉ indexy jsou užitečné pouze pro fulltextové vyhledávání prováděné pomocí klauzule MATCH() / AGAINST(), na rozdíl od výše uvedených tří - které jsou obvykle implementovány interně pomocí b-stromů (umožňujících výběr, řazení nebo rozsahy začínající od nejvíce levého sloupce) nebo hashovací tabulky (umožňující výběr začínající od sloupce nejvíce vlevo).

    Tam, kde jsou ostatní typy indexů univerzální, je FULLTEXTOVÝ index specializovaný v tom smyslu, že slouží úzkému účelu:používá se pouze pro funkci „fulltextového vyhledávání“.

Podobnosti

  • Všechny tyto indexy mohou mít více než jeden sloupec.

  • S výjimkou FULLTEXTU je pořadí sloupců důležité:má-li být index v dotazu užitečný, musí dotaz používat sloupce z indexu začínající zleva – nemůže používat pouze druhou, třetí nebo čtvrtou část index, pokud také nepoužívá předchozí sloupce v indexu ke shodě se statickými hodnotami. (Aby byl FULLTEXT index pro dotaz užitečný, musí dotaz používat vše sloupce indexu.)



  1. Rozdělit hodnotu z jednoho pole na dvě

  2. Jak zobrazit řazení tabulky v MySQL

  3. Jak vrátit všechna nedůvěryhodná omezení cizích klíčů na SQL Server (příklad T-SQL)

  4. Některé skvělé zprávy pro zákazníky Standard Edition v SQL Server 2014