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

Jak nákladné jsou JOINy ​​v SQL? A/nebo, jaký je kompromis mezi výkonem a normalizací?

Nejlepším postupem je vždy začněte s 3NF a poté uvažujte o denormalizaci pouze v případě, že zjistíte konkrétní problém s výkonem.

Výkon je pouze jeden problémů, se kterými se musíte potýkat s databázemi. Duplikováním dat riskujete, že umožníte, aby ve vaší databázi byla nekonzistentní data, a tím zrušíte jeden ze základních principů relačních databází, konzistenci (C v ACID ).

Ano, připojení něco stojí, to se nedá obejít. Náklady jsou však obvykle mnohem nižší, než byste si mysleli, a mohou být často zaplaveny jinými faktory, jako je doba přenosu v síti. Zajištěním správného indexování příslušných sloupců se můžete vyhnout mnoha těmto nákladům.

A nezapomeňte na optimalizační mantru:měřte, nehádejte! A měřit v prostředí podobném výrobě. A zachovat pravidelné měření (a ladění) – optimalizace je pouze operace nastavení a zapomnění, pokud se vaše schéma a data nikdy nezmění (velmi nepravděpodobné).

Návrat k výkonu lze obvykle zajistit bezpečným použitím spouštěčů k udržení konzistence. To samozřejmě zpomalí vaše aktualizace, ale vaše vybrané položky mohou stále běžet rychleji.



  1. MySQL 8 ignoruje délky celých čísel

  2. Bezpečný způsob odesílání pošty přes PHP mnoha uživatelům

  3. Získejte výchozí sériovou hodnotu po INSERT uvnitř PL/pgSQL

  4. Optimální dotaz pro načtení kumulativního součtu v MySQL