sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres 9.1 vs Mysql 5.6 InnoDB?

PostgreSQL är mycket mer avancerat när det kommer till SQL-funktioner.

Saker som MySQL fortfarande inte har (och PostgreSQL har):

  • uppskjutningsbara begränsningar

  • kontrollera begränsningar (MySQL 8.0.16 lade till dem, MariaDB 10.2 har dem)

  • full yttre koppling
    MySQL använder tyst en inre koppling med några syntaxvarianter:
    https://rextester.com/ADME43793

  • sidofogar

  • reguljära uttryck fungerar inte med UTF-8 (Fast med MySQL 8.0)

  • reguljära uttryck stöder inte ersätt eller delsträng (Introducerat med MySQL 8.0)

  • tabellfunktioner ( select * from my_function() )

  • vanliga tabelluttryck (Introducerat med MySQL 8.0)

  • rekursiva frågor (Introducerat med MySQL 8.0)

  • skrivbara CTE:er

  • fönsterfunktioner (Introducerat med MySQL 8.0)

  • funktionsbaserat index

  • partiellt index

  • INKLUDERA ytterligare kolumn i ett index (t.ex. för unika index)

  • statistik med flera kolumner

  • fulltextsökning på transaktionstabeller (MySQL 5.6 stöder detta)

  • GIS-funktioner på transaktionstabeller

  • EXCEPT eller INTERSECT-operatör (MariaDB har dem)

  • du kan inte använda en temporär tabell två gånger i samma select-sats

  • du kan inte använda tabellen som ändras (uppdatera/ta bort/infoga) i ett underval

  • du kan inte skapa en vy som använder en härledd tabell (Möjligt sedan MySQL 8.0)

      create view x as select * from (select * from y);
    
  • läskonsistens på uttalandenivå. Behövs för t.ex.:
    update foo set x = y, y = x eller
    update foo set a = b, a = a + 100

  • transaktions-DDL

  • DDL-utlösare

  • uteslutningsbegränsningar

  • nyckel-/värdelager

  • Indexering av kompletta JSON-dokument

  • SQL/JSON-sökvägsuttryck (sedan Postgres 12)

  • intervalltyper

  • domäner

  • arrayer (inklusive index på arrayer)

  • roller (grupper) för att hantera användarbehörigheter (MariaDB har dem, introducerade med MySQL 8.0)

  • parallella frågor (sedan Postgres 9.6 )

  • skapande av parallellt index (sedan Postgres 11)

  • användardefinierade datatyper (inklusive kontrollbegränsningar)

  • materialiserade åsikter

  • anpassade aggregat

  • anpassade fönsterfunktioner

  • korrekt boolean datatyp
    (att behandla alla uttryck som kan konverteras till ett icke-nolltal som "sant" är inte en riktig boolesk typ)

När det kommer till Spatial/GIS-funktioner är Postgres med PostGIS också mycket mer kapabel. Här är en trevlig jämförelse.

Jag är inte säker på vad du kallar "användarvänlighet", men det finns flera moderna SQL-funktioner som jag inte skulle vilja missa (CTE, fönsterfunktioner) som skulle definiera "användarvänlighet" för mig.

Nu är PostgreSQL inte perfekt och förmodligen det mest motbjudande kan vara, att ställa in den fruktade VACUUM-processen för en tung skrivdatabas.



  1. Introduktion av vanliga tabelluttryck i SQL Server

  2. Vad är syftet med en Android-projektionskarta i en innehållsleverantör?

  3. Hur man installerar, säkrar och prestandajustering av MariaDB Database Server

  4. Webbplats nere och Twitter-flöde