sql >> Databáze >  >> RDS >> PostgreSQL

Postgres 9.1 vs Mysql 5.6 InnoDB?

PostgreSQL je mnohem pokročilejší, pokud jde o funkce SQL.

Věci, které MySQL stále nemá (a PostgreSQL má):

  • odložitelná omezení

  • zkontrolujte omezení (MySQL 8.0.16 přidal, MariaDB 10.2 je má)

  • úplné vnější spojení
    MySQL tiše používá vnitřní spojení s některými variantami syntaxe:
    https://rextester.com/ADME43793

  • boční spoje

  • regulární výrazy nefungují s UTF-8 (Opraveno s MySQL 8.0)

  • regulární výrazy nepodporují nahrazení nebo podřetězec (Zavedeno s MySQL 8.0)

  • tabulkové funkce ( select * from my_function() )

  • běžné tabulkové výrazy (Zavedeno s MySQL 8.0)

  • rekurzivní dotazy (Zavedeno s MySQL 8.0)

  • zapisovatelné CTE

  • funkce okna (Zavedeno s MySQL 8.0)

  • index založený na funkci

  • částečný index

  • INCLUDE další sloupec v indexech (např. pro jedinečné indexy)

  • vícesloupcové statistiky

  • fulltextové vyhledávání v transakčních tabulkách (MySQL 5.6 to podporuje)

  • Funkce GIS v transakčních tabulkách

  • Operátor EXCEPT nebo INTERSECT (má je MariaDB)

  • nemůžete použít dočasnou tabulku dvakrát ve stejném příkazu select

  • nemůžete použít měněnou tabulku (update/delete/insert) v dílčím výběru

  • nemůžete vytvořit pohled, který používá odvozenou tabulku (Možné od MySQL 8.0)

      create view x as select * from (select * from y);
    
  • konzistence čtení na úrovni příkazu. Potřebné např.:
    update foo set x = y, y = x nebo
    update foo set a = b, a = a + 100

  • transakční DDL

  • spouštěče DDL

  • vylučovací omezení

  • obchod klíč/hodnota

  • Indexování kompletních dokumentů JSON

  • Výrazy cesty SQL/JSON (od Postgres 12)

  • typy rozsahů

  • domén

  • pole (včetně indexů na polích)

  • role (skupiny) pro správu uživatelských oprávnění (MariaDB je má, představeno s MySQL 8.0)

  • paralelní dotazy (od Postgres 9.6 )

  • vytváření paralelního indexu (od Postgres 11)

  • uživatelem definované datové typy (včetně kontrolních omezení)

  • materializované pohledy

  • vlastní agregáty

  • vlastní funkce okna

  • správný boolean datový typ
    (zacházet s jakýmkoli výrazem, který lze převést na nenulové číslo jako „true“, není správný booleovský typ)

Pokud jde o prostorové/GIS funkce, Postgres s PostGIS je také mnohem schopnější. Zde je pěkné srovnání.

Nejste si jisti, co nazýváte „snadné použití“, ale existuje několik moderních funkcí SQL, které bych si nechtěl nechat ujít (CTE, funkce oken), které by pro mě definovaly „snadnost použití“.

PostgreSQL nyní není dokonalý a pravděpodobně to nejnepříjemnější, co může být, vyladit obávaný proces VACUUM pro těžkou databázi pro zápis.



  1. SQL Server tiše zkrátí varchar v uložených procedurách

  2. Osvědčené postupy pro návrh vícejazyčné databáze

  3. Jak nasadit Percona Server pro MySQL pro vysokou dostupnost

  4. Oblíbené triky pro ladění výkonu