Products · Product
PostgreSQL
Raised as a usability problem by 193 people on Hacker News over 19 years (2008–2026), in 168 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Every issue, all time, most people first
Planner picks a bad query plan and users cannot force a better oneUnreviewed
20082026- Query planner picks slow join strategy; user must manually disable nested loop joins2025-08-23
- Same simple query becomes very slow for some organizations because planner picks a bad index2024-03-16
- Planner ignores tenant relationships, so full-text index goes unused and queries get slow2023-08-23
Beginner tooling is weak, making setup and use a headacheUnreviewed
20082026- Hard for engineers to debug and own because it was built on Postgres internals2026-07-25
- Running PostgreSQL on bare metal is painful to manage, per the commenter's experience2025-10-17
- Postgres has weaker beginner tooling and felt like a headache to set up and use2023-09-14
JSONB queries are slow and hard to optimize, with awkward syntaxUnreviewed
20082026- Partial JSON indexes are awkward to write, since the predicate needs equality while other parts need operators2026-10-12
- JSONB queries are very slow and painful to optimize, with awkward syntax2024-07-07
- Commenter must constantly google JSONB query syntax because it is too confusing2021-05-22
Upgrades need significant downtime and the old version installedUnreviewed
20082026- Upgrading data requires keeping the previous version installed, which is very annoying2025-12-20
- Upgrading requires significant downtime, is error-prone, and needs the old version installed2024-10-18
- Major upgrades need two installed versions, downtime, and many manual steps, so the user fears doing them2020-11-08
Replication is hard to set up and maintain, requiring intricate knowledgeUnreviewed
20082026- Replication fails silently, so an engineer must constantly check it manually2023-07-03
- Replication is hard to set up and maintain, requiring knowledge of intricate details2016-03-08
- Replication setup is complex, with no easy built-in failover or recovery tools2014-12-18
So much documentation that learning the basics is hardUnreviewed
20082026- Docs are hard to navigate and lack hyperlinks and examples2019-09-22
- So much documentation that getting the basics down is hard2017-08-29
- Hard to set up and use; even experienced users struggle to follow the docs2014-12-08
Backslash commands like \dt are esoteric, with a steep learning curveUnreviewed
20082026- Has to learn many weird slash commands; tooling isn't great and setup is complicated2024-04-26
- Too many backslash commands to memorize; feels awkward and slightly laggy2015-06-18
- Backslash commands like \dt are esoteric, adding a steep learning curve2012-07-20
Developers can't tell a query will silently slow to a table scanUnreviewed
20082026- Optimizing slow queries requires guesswork and black-magic tricks that even experts struggle with2019-05-19
- Developers can't tell a query will silently slow to a table scan2019-03-19
- Can't tell whether a query is slow, since timing numbers lack a clear reference point2014-04-17
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
- Partial JSON indexes are awkward to write, since the predicate needs equality while other parts need operators2026-10-12
- Too many interacting tuning knobs with conflicting advice to operate well2026-08-19
- Hard for engineers to debug and own because it was built on Postgres internals2026-07-25
- The HTML version of the manual is clunky to use, so readers miss the better PDF.2026-06-04
- Memory setting has no safe value and can still allocate unbounded memory2026-03-21
- Setting up a separate user with different permissions was thoroughly confusing2026-02-06
- No way to force the right plan, so developers rewrite queries and hope2026-02-06
- Getting query timing info requires remembering many EXPLAIN options and manually pasting into a visualizer2026-02-01
- Inserts an extra space after line breaks, so copying long queries is painful2026-01-20
- Multi-punctuation custom operators make it very hard to guess their meaning2026-01-05
- Upgrading data requires keeping the previous version installed, which is very annoying2025-12-20
- Restoring the old primary after a failover is extremely frustrating to operate2025-12-13
- Deduplicating rows without a primary key is surprisingly difficult, needing a custom program2025-11-16
- Running PostgreSQL on bare metal is painful to manage, per the commenter's experience2025-10-17
- Dashboard workloads on replicas need careful planning to avoid standby delay conflicts2025-09-22
- Query planner picks slow join strategy; user must manually disable nested loop joins2025-08-23
- Separate learning curve; users must read Postgres source comments to understand it2025-07-11
- Accent-insensitive search needs manual duplicate columns, indexes and an extension2025-05-06
- Needs manual per-table autovacuum tuning to avoid bloat, unlike MySQL's stock settings2025-04-09
- Running queries keep going after client disconnects, causing dog-piling and slowdowns2025-04-05
- Keyboard navigation is poor: arrow keys don't work and shortcuts aren't visible2025-03-18
- Text contrast is too low, making the page hard to read2025-03-03
- Hard to submit patches through mailing list using Outlook2025-03-03
- Set_config is very slow with connection pooling and per-query user IDs2025-02-09
- README has no examples; can't tell how the tool works quickly2025-01-17
- Looks easy at first, but tuning and maintenance get hard as data grows and failures surprise2025-01-14
- Hidden magic and convoluted JSON operations make failures hard to understand or recover from2024-12-11
- TOC runs off screen at 120% zoom, hiding last entries and footer text2024-11-13
- Schema dumps reorder statements so same schema yields different files, causing noisy git diffs2024-11-09
- Unquoted identifiers are silently lowercased, so quoted camelCase names fail to match2024-11-03
- Clunky and arcane, hard to feel confident doing complex things with it2024-10-18
- Upgrading PostgreSQL is a terrible experience, so people stay on old versions2024-10-18
- Upgrading requires significant downtime, is error-prone, and needs the old version installed2024-10-18
- No built-in utility to check for database corruption before dumping, forcing guesswork2024-10-18
- Search query changes when clicking different threads, which is annoying2024-09-19
- JSONB queries are very slow and painful to optimize, with awkward syntax2024-07-07
- Permissions are hard to get right, especially for views exposing underlying data2024-05-11
- Confusing timestamp types; WITH TIME ZONE does not store the zone, easy to get wrong2024-05-10
- Role setup feels like trial and error, with a thin manual and unclear results2024-04-29
- Renaming a user left permissions behind, causing confusing partial table access2024-04-29
- Has to learn many weird slash commands; tooling isn't great and setup is complicated2024-04-26
- Same simple query becomes very slow for some organizations because planner picks a bad index2024-03-16
- Few tuning tools for search ranking, and the ones that exist are hard to use2024-03-15
- Crosstab requires specifying column names every time, making exploration unpleasant and awkward2023-10-09
- Unclear how multi-term searches work and how to keep the dictionary table current2023-10-08
- Setup and configuration docs are a long, dense wall of text2023-10-07
- Postgres has weaker beginner tooling and felt like a headache to set up and use2023-09-14
- Planner ignores tenant relationships, so full-text index goes unused and queries get slow2023-08-23
- JSON operators are annoying to work with compared to mongosh2023-08-11
- Too many setup steps for installation and user authentication, making it hassle for simple data storage2023-07-06