Explaining sql levels based on one meme:
If you're replicating SQL databases, whether MySQL, Postgres, or SQL Server, check out Airbyte!
- Concepts
- ORMs
- data types
- foreign keys
- indexes
- SQL: Just go through https://mode.com/sql-tutorial/
- SELECT/INSERT/UPDATE/DELETE
- SELECT DISTINCT
- ORDER BY
- GROUP BY
- LIMIT/OFFSET
- CREATE TABLE
- JOIN
- SELECT/INSERT/UPDATE/DELETE
- Concepts
- ACID
- transactions
- keyset pagination
- normal forms
- computed columns
- stored columns
- inverted indexes
- window functions
- SQL
- outer joins
- ORDER BY in aggregates
- CTEs
- query plans and EXPLAIN
- Concepts
- Connection pools
- plan hints
- cursors
- MVCC garbage collection
- recursive CTEs
- LATERAL joins
- Insights
- ORMs create bad queries: explanation needed
- optimizers don't work without table statistics: explanation needed
- there are no non-nullable types: explanation needed
- Concepts
- MERGE
- COUNT(*) vs COUNT(1): https://svenweller.wordpress.com/2016/10/11/otn-apprecition-day-the-otn-forum/
- isolation levels
- zigzag join
- grouping sets, cube, rollup
- write skew
- partial indexes
- sharding
- phantom reads
- triggers
- Insights
- serializable restarts require retry loops on all statements: explanation needed
- generator functions zip when cross joined: explanation needed
- Concepts
- SELECT FOR UPDATE
- denormalization
- transaction contention
- sargability
- star schemas
- utf8mb4
- Insights
- Ascending Key Problem: explanation needed
- Ambiguous network errors: explanation needed
- NULLs in CHECK constraints are truthy: explanation needed
- Concepts
- DEFERRABLE INITIALLY IMMEDIATE
- MATCH PARTIAL foreign keys
- EXPLAIN approximates SELECT COUNT(*)
- causual reverse
- Insights
- TPCC requires wait times: explanation needed
- cost models don't reflect reality: explanation needed
- 'null'::jsonb IS NULL = false: explanation needed
- Concepts
- database cracking: explanation needed
- learned indexes: explanation needed
- XTID exhaustion: explanation needed
- Worst Case Optimal Join: explanation needed
- Volcano model: Paper of paralelism on query optimization. https://paperhub.s3.amazonaws.com/dace52a42c07f7f8348b08dc2b186061.pdf
- Battle Scars
- Vectorized doesn't mean SIMD: explanation needed
- join ordering is NP hard: explanation needed
- NULLs are equal in DISTINCT but inequal in UNIQUE: explanation needed
- dee and dum: https://blog.jooq.org/creating-tables-dum-and-dee-in-postgresql/
- the Halloween problem: https://en.wikipedia.org/wiki/Halloween_Problem
- allballs: https://www.postgresql.org/message-id/24526.1106597936%40sss.pgh.pa.us
- fsyncgate: explanation needed
- Every SQL operator is actually a JOIN: explanation needed
- SERIAL is non-transactional: explanation needed
- NULL (?): explanation needed