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

Mnoho tabulek nebo řádků, který z nich je v SQL efektivnější?

Relační databáze jsou navrženy tak, aby ukládaly mnoho řádků na tabulku. Existuje celá řada mechanismů pro usnadnění velkých tabulek, jako například:

  • Indexy na libovolné kombinaci polí pro urychlení vyhledávání
  • Ukládání stránek do mezipaměti, takže běžně používané stránky zůstávají v paměti
  • Vertikální dělení (sloupcové databáze) pro zvýšení rychlosti požadavků
  • Pokročilé algoritmy, jako jsou hash joins a group bys (alespoň v jiných databázích než MySQL)
  • Použití více procesorů a disků ke zpracování dotazů

Existuje jedna věc, která je při vkládání dat do jedné tabulky obtížnější, a to je zabezpečení. A ve skutečnosti je to za určitých okolností primárním zájmem a v zásadě vyžaduje, aby data byla v samostatné tabulce. Tyto aplikace jsou vzácné a daleko od sebe.

Abychom uvedli příklad, jak špatné může být ukládání dat do více tabulek, představte si, že ve vašem systému máte jeden záznam na společnost a ukládáte jej do tabulky. Tento záznam uchovává informace o společnosti -- něco jako jméno, adresa, cokoliv. Volání má 100 bajtů informací.

Ve vašem schématu je samostatná tabulka pro každou „společnost“, takže na tabulku je jeden řádek. Tento záznam bude umístěn na jedné datové stránce. Datová stránka může mít 16 kB, takže pro uložení těchto dat ztrácíte asi 15,9 kB. Uložení 1000 takových záznamů zabere 16 MB místo přibližně 7 stránek (112 kB). To může být významný zásah do výkonu.

Navíc s více tabulkami neberete v úvahu problémy spojené s údržbou všech tabulek a zajištěním správnosti dat v různých tabulkách. Aktualizace údržby je třeba aplikovat na tisíce tabulek namísto hrstky.



  1. PostgreSQL 13:Nenechte sloty zabít vašeho primárního

  2. SQL dotazy

  3. Nejlepší způsob, jak se vyhnout duplicitnímu vstupu do databáze mysql

  4. Příkaz INSERT MySQL v Pythonu