Products · Broad category
SQL
Raised as a usability problem by 188 people on Hacker News over 19 years (2008–2026), in 160 threads.
This is a broad category rather than one product, so its issues aren't ranked on the home page.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
Every issue, all time, most people first
Complex SQL queries are very unintuitive to write by handUnreviewed
20082026- SQL is unintuitive and hard to parse for people2026-06-07
- Inconsistent grammar makes SQL hard to learn and read, needing refactoring when nesting queries2026-06-04
- Verbose syntax with split keywords makes queries hard and infuriating to write2026-06-04
Written clause order doesn't match execution orderUnreviewed
20082026- Hard to remember clause order and arbitrary keyword placement; terrible error messages2024-11-30
- SQL's clause order jumps back and forth, which is confusing to read2024-02-19
- Written clause order doesn't match execution order, making queries confusing to read2023-04-14
SELECT first means autocomplete has no table info for columnsUnreviewed
20082026- SELECT comes before FROM, so editors can't autocomplete columns early2026-02-23
- Must write columns before FROM, so autocomplete can't suggest columns and writing is backtracked2025-08-18
- SELECT comes first, so autocomplete has no table info to suggest columns2024-03-24
Optimizer picks a poor plan and users can't steer itUnreviewed
20082026- Planner sometimes picks slow plans, causing performance bugs the user can't directly control2025-03-25
- Easy to write slow queries by mistake, with no rejection when no index is used2023-12-25
- When queries get slow, the cause is obscure even with EXPLAIN2023-09-04
Error messages from SQL databases are poor and unhelpfulUnreviewed
20082026- Error messages give vague syntax errors that don't locate the problem2026-08-23
- Syntax is unintuitive, easy to mix up, and syntax errors are painful to debug2026-06-07
- SQL error messages seem half baked compared to imperative languages2024-10-07
Trailing commas cause syntax errors and leading commas feel unintuitiveUnreviewed
20082026- Trailing commas cause most syntax errors, and leading-comma style feels unintuitive2025-10-08
- Comma-separated SELECT lists make the last item special, which is infuriating to edit2025-02-11
- Has to fiddle with trailing commas until the query syntax is valid2024-09-25
NULL behaves unintuitively and surprises query writersUnreviewed
20082026- NULL behaves inconsistently across contexts, making SQL unintuitive and difficult to reason about2023-03-13
- NULL not equaling itself is unintuitive for developers unfamiliar with SQL2022-07-11
- SQL null rules are terrible and easy to trip over2022-01-24
Nested subqueries are syntactically ugly and confusingUnreviewed
20082026- Nested subqueries are syntactically ugly and confusing to read2025-04-21
- Subqueries force restating projections and naming aliases, adding needless syntax2024-08-25
- Nested queries are clunky and hard to compose for interactive use2024-01-24
Joins make performance hard to reason aboutUnreviewed
20082026- Having to write ten to twenty joins for every query is tedious2025-05-16
- Joins need repetitive app code; no ergonomic way to prefix columns or nest results2022-06-28
- Hard queries that cut across schema joins become pointlessly difficult or impossible to write2021-07-10
Tooling layers must be learned by beginners before queries workUnreviewed
20082026- Learning standard SQL doesn't transfer, since real use requires vendor-specific features2024-08-21
- Users don't notice SQL's hidden problems, so they barely use its advanced features2024-03-24
- Plugging SQL into APIs forces unintuitive situations and poor user experience2023-02-09
Graph and tree data become huge, incomprehensible query hacksUnreviewed
20082026- Awkward to express graph, spatial and other modern data models in SQL2022-09-06
- SQL can't return nested relationship results, so graph-like data is hard to express2021-10-03
- Tree-shaped data is tedious and frustrating to query in SQL2021-07-31
Declarative abstraction hides performance, forcing contortions and profilingUnreviewed
20082026- Syntax makes refactoring queries tedious and is a mess outside fast operations2020-08-11
- Primitives are non-intuitive, queries need lots of fiddling, execution is opaque2020-04-22
- Optimizing queries requires memorizing arbitrary mappings from SQL to procedural algorithms2019-11-28
Complex queries silently duplicate rows, hard to reason aboutUnreviewed
20082026- Long queries joining many tables are hard to read and inspect2023-06-06
- Hard to read and debug long queries; checking intermediate results means rewriting the query2023-04-14
- Query results silently contain duplicate rows, which beginners overlook and which breaks on larger data2022-10-01
SET before WHERE makes people fear running updates without WHEREUnreviewed
20082026- Put SET before WHERE, so the author fears running the update without a WHERE2024-01-25
- SET comes before WHERE, so an accidental Enter runs a dangerous update2021-10-29
- Typing the statement in order risks running an UPDATE with no WHERE by accident2021-10-29
One clause per line makes the query harder to readUnreviewed
20082026- Formatted queries balloon into many short lines, making them hard to read and scroll2023-08-21
- Splitting each SQL clause onto its own line makes the text harder to read2019-06-14
- Writing SQL is hard, even though its reading is readable2019-05-09
Easy to forget table relations in multi-table queriesUnreviewed
20082026- Every model needs more tables, leading to complex, join-heavy queries and hard reasoning2024-08-20
- Easy to forget table relations in complex queries with several tables2019-04-15
- Constructing non-trivial relational queries is counterintuitive and easy to get subtly wrong2013-08-23
Hard to compose because of its human-readable syntaxUnreviewed
20082026- Writing verbose code by hand is slow and tedious, making coding feel like a waste of time2026-09-28
- Hard to compose because of its human-readable syntax design2024-01-25
- Syntax is wilfully obtuse and hard to compose or read2023-06-27
Writing SQL queries takes an hour for logic code does in minutesUnreviewed
20082026- Can't tell from a SQL query how slow it will be or when it will cause surprises2020-05-26
- Writing SQL queries takes an hour, when the same logic would take minutes in code2018-07-13
- Large SQL statements become hard to understand as complexity grows2015-05-19
Hard to reason about and generate dynamic search queriesUnreviewed
20082026- Simple requests become convoluted multi-level queries due to bolted-on syntax2024-02-28
- Hard to reason about and generate dynamic queries for searches2014-06-01
- Building dynamic search queries with many optional joins produces tedious, hard-to-maintain code2014-04-03
Selecting all but one column means listing every other columnUnreviewed
20082026- Selecting all columns but one means listing every other column by hand, which is tedious2022-12-30
- Hard to hide or replace a few columns among many in SELECT *2022-01-25
- Can't easily remove or rename columns without listing all of them2014-06-01
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Writing verbose code by hand is slow and tedious, making coding feel like a waste of time2026-09-28
- Error messages give vague syntax errors that don't locate the problem2026-08-23
- Syntax is unintuitive, easy to mix up, and syntax errors are painful to debug2026-06-07
- SQL is unintuitive and hard to parse for people2026-06-07
- Inconsistent grammar makes SQL hard to learn and read, needing refactoring when nesting queries2026-06-04
- Verbose syntax with split keywords makes queries hard and infuriating to write2026-06-04
- Window function syntax never clicks, always needs looking up2026-05-16
- No obvious way to select distinct rows across many columns, and counting duplicates is awkward2026-04-03
- SELECT comes before FROM, so editors can't autocomplete columns early2026-02-23
- SQL inside Python is just a string, with no syntax highlighting or compile-time checking2025-11-26
- Must constantly consult man pages; many similar syntaxes differ by vendor2025-10-25
- Trailing commas cause most syntax errors, and leading-comma style feels unintuitive2025-10-08
- Left join duplicates parent rows, making nested data hard to get out cleanly2025-09-06
- Error output dumps the entire query, making the real problem hard to find2025-09-06
- Must write columns before FROM, so autocomplete can't suggest columns and writing is backtracked2025-08-18
- Having to write ten to twenty joins for every query is tedious2025-05-16
- Nested subqueries are syntactically ugly and confusing to read2025-04-21
- Planner sometimes picks slow plans, causing performance bugs the user can't directly control2025-03-25
- Comma-separated SELECT lists make the last item special, which is infuriating to edit2025-02-11
- Hard to remember clause order and arbitrary keyword placement; terrible error messages2024-11-30
- Alignment forces re-indenting many lines whenever the query is modified2024-11-15
- Colors come out wrong for Postgres-specific syntax combinations2024-11-15
- SQL error messages seem half baked compared to imperative languages2024-10-07
- Has to fiddle with trailing commas until the query syntax is valid2024-09-25
- Long 150-character lines make code hard to read and review, causing errors in merges2024-09-25
- API lets developers write injection vulnerabilities inadvertently, making mistakes easy2024-09-17
- Subqueries force restating projections and naming aliases, adding needless syntax2024-08-25
- Learning standard SQL doesn't transfer, since real use requires vendor-specific features2024-08-21
- Select aliases can't be referenced in filters and table names are required only sometimes, which is confusing2024-08-21
- Every model needs more tables, leading to complex, join-heavy queries and hard reasoning2024-08-20
- Hard to start tinkering without a database; tutorials stay trivial2024-06-04
- Double-click fails, then Java download leads to a scary license warning and error loops2024-06-03
- Tabs make it hard to see the whole related table graph at once2024-06-03
- SQL debugger and tooling are inferior, arcane, and harder to use than general languages2024-04-25
- Error messages from modern SQL databases are poor and unhelpful to users2024-04-24
- Users don't notice SQL's hidden problems, so they barely use its advanced features2024-03-24
- SELECT comes first, so autocomplete has no table info to suggest columns2024-03-24
- Complex queries must be read in a spiral order, hard to follow2024-03-23
- Ctrl-Enter only runs a highlighted statement, with no hint; long CSV table names are truncated and headers not auto-detected2024-02-29
- Composability is hard, and each database has different deviations and extensions2024-02-28
- Simple requests become convoluted multi-level queries due to bolted-on syntax2024-02-28
- Ends up with giant unmaintainable SQL blobs, which is frustrating2024-02-19
- Inconsistent syntax and keywords, with very unhelpful error messages2024-02-19
- SQL's clause order jumps back and forth, which is confusing to read2024-02-19
- Put SET before WHERE, so the author fears running the update without a WHERE2024-01-25
- Hard to compose because of its human-readable syntax design2024-01-25
- Nested queries are clunky and hard to compose for interactive use2024-01-24
- Easy to write slow queries by mistake, with no rejection when no index is used2023-12-25
- Hard to remember ALTER COLUMN syntax; errors from easily missed keywords like TO2023-09-16
- When queries get slow, the cause is obscure even with EXPLAIN2023-09-04