[{"data":1,"prerenderedAt":348},["ShallowReactive",2],{"\u002Fdatabases\u002Fpostgresql":3},{"id":4,"title":5,"body":6,"description":320,"extension":321,"faq":322,"headline":338,"lastUpdated":339,"meta":340,"navigation":341,"path":342,"seo":343,"stem":346,"__hash__":347},"databases\u002F4.databases\u002F1.postgresql.md","The PostgreSQL Client for Mac That Finds Your Missing Indexes",{"type":7,"value":8,"toc":314},"minimark",[9,13,42,280,285,295,301,307,311],[10,11,12],"p",{},"TableStudio is a native Mac client for PostgreSQL. It reads what your database actually spends its time on and turns that into fixes. It watches for the problems that take Postgres down, like wraparound, bloat and stuck replication slots. And it lets coding agents like Claude Code, Codex and Cursor work on it under rules TableStudio enforces itself.",[14,15,18,31],"lead-feature",{"icon":16,"title":17},"i-ph-lightning","Find the indexes your workload is missing",[10,19,20,21,25,26,30],{},"Most index advice is a guess. TableStudio's comes from ",[22,23,24],"code",{},"pg_stat_statements",". ",[27,28,29],"strong",{},"Query Insights"," ranks the statements Postgres spends its time on, explains what's wrong with each, and proposes a fix.",[10,32,33,34,37,38,41],{},"The ",[27,35,36],{},"Index Advisor"," then looks across the whole workload for the fewest indexes that cover the most database time. It builds each one as a hypothetical index and checks that the planner would actually use it before suggesting it. It works the other way too: ",[27,39,40],{},"hide an index"," from the planner to see which queries would slow down before you drop it.",[43,44,47,86,112,144,174,198,222,241,265],"feature-cards",{"description":45,"title":46},"From a quick look at a table to vacuum trouble at 2 a.m.","What TableStudio does for Postgres",[48,49,52],"feature-card",{"icon":50,"title":51},"i-ph-shield-check","Claude Code and Cursor, kept in check",[53,54,55,59,70,73,76,83],"ul",{},[56,57,58],"li",{},"Claude Code, Codex, Cursor and OpenCode reach your connections by name, with no password in a config file.",[56,60,61,62,65,66,69],{},"Reads run in a read-only transaction. ",[22,63,64],{},"pg_terminate_backend",", ",[22,67,68],{},"dblink"," and server file access are refused.",[56,71,72],{},"A data change on a remote database must be dry-run first, and rolls back if the real row count differs.",[56,74,75],{},"Production changes are staged for review and applied with Touch ID; every AI change can be undone, cascades included.",[56,77,78,79,82],{},"The plugin stops ",[22,80,81],{},"psql",", Prisma, Drizzle and Rails from writing to production from the terminal.",[56,84,85],{},"Set a database to Structure only and agents see the schema, never a row value.",[48,87,90],{"icon":88,"title":89},"i-ph-plugs-connected","Every Postgres you run",[53,91,92,95,98,109],{},[56,93,94],{},"Paste a connection string or URL into Host and every field fills itself.",[56,96,97],{},"Supabase, Neon, Amazon RDS, Railway, Render, Vercel, Prisma Postgres, DigitalOcean, Fly.io, Aiven and Azure, directly or over SSH.",[56,99,100,101,104,105,108],{},"Import your RDS instances, or the databases in your projects' ",[22,102,103],{},".env"," and ",[22,106,107],{},"docker-compose"," files.",[56,110,111],{},"The servers Homebrew and Postgres.app set up are picked up with their data untouched.",[48,113,116],{"icon":114,"title":115},"i-ph-heartbeat","Health checks that know Postgres",[53,117,118,121,124,127,134],{},[56,119,120],{},"Transaction ID and multixact age climbing toward wraparound.",[56,122,123],{},"Autovacuum off, starved of workers, or unable to remove dead rows.",[56,125,126],{},"Abandoned prepared transactions, and inactive replication slots holding WAL.",[56,128,129,130,133],{},"Replica lag, WAL archiving that's off or failing, data checksum failures and ",[22,131,132],{},"fsync"," off.",[56,135,136,139,140,143],{},[22,137,138],{},"work_mem"," × ",[22,141,142],{},"max_connections"," larger than the machine's memory.",[48,145,148],{"icon":146,"title":147},"i-ph-tree-structure","The whole schema, not just tables",[53,149,150,153,156,171],{},[56,151,152],{},"Create schemas, enums, domains, materialized views and triggers without writing DDL.",[56,154,155],{},"Browse row-level security policies, roles, functions and procedures.",[56,157,158,159,162,163,166,167,170],{},"Schema checks catch ",[22,160,161],{},"json"," that should be ",[22,164,165],{},"jsonb",", timestamps without a time zone, the locale-dependent ",[22,168,169],{},"money"," type, foreign keys without an index, invalid indexes and sequences close to running out.",[56,172,173],{},"Write table and column comments with AI, so agents and teammates understand the schema.",[48,175,178],{"icon":176,"title":177},"i-ph-table","Rows and results",[53,179,180,186,189,192,195],{},[56,181,182,183,185],{},"Enum columns get a dropdown of their type's values; ",[22,184,165],{}," is shown readably.",[56,187,188],{},"Hover a foreign key to preview the row it points to.",[56,190,191],{},"Stage edits across rows and apply them in one transaction.",[56,193,194],{},"Import CSV or TSV. Export to CSV, TSV, JSON, SQL, Markdown or Excel.",[56,196,197],{},"Fill a table with realistic fake rows that respect its foreign keys.",[48,199,202],{"icon":200,"title":201},"i-ph-code","SQL and plans",[53,203,204,207,213,216],{},[56,205,206],{},"Autocomplete that knows your schemas, tables and columns.",[56,208,209,212],{},[22,210,211],{},"EXPLAIN ANALYZE"," drawn as a tree, with the slow node obvious.",[56,214,215],{},"Ask in plain English for Postgres SQL, or have AI fix the error a query just threw.",[56,217,218,219,221],{},"Open the connection in ",[22,220,81],{}," in Terminal, or copy the command line without the password.",[48,223,226],{"icon":224,"title":225},"i-ph-squares-four","A dashboard that fits your stack",[53,227,228,231,234],{},[56,229,230],{},"Packs for connections and locks, top queries, bloat and vacuum, cache and I\u002FO, index health, replication and storage.",[56,232,233],{},"Packs that recognize your schema: better-auth, Auth.js, Supabase Auth, Django, Rails and Devise, Stripe, pg-boss, Graphile Worker, Oban and pgvector.",[56,235,236,237,240],{},"Maintenance at a glance: tables due a ",[22,238,239],{},"VACUUM ANALYZE"," and indexes nothing reads.",[48,242,245],{"icon":243,"title":244},"i-ph-clock-counter-clockwise","Backups, copies and moves",[53,246,247,256,259,262],{},[56,248,249,104,252,255],{},[22,250,251],{},"pg_dump",[22,253,254],{},"pg_restore"," to your Mac or any S3 bucket, using the client tools you already have.",[56,257,258],{},"Restore points before a risky change, and throwaway sandbox copies with real rows or none.",[56,260,261],{},"Move a database to another host, or to MySQL, with a pre-flight report of what won't translate.",[56,263,264],{},"Sync rows from one database to another, parents before children.",[48,266,269],{"icon":267,"title":268},"i-ph-hard-drives","Postgres on your Mac",[53,270,271,274,277],{},[56,272,273],{},"Create, start and stop local servers, launch them at login, and read their logs.",[56,275,276],{},"Add pgvector, PostGIS or pg_trgm to a local server, and enable extensions anywhere.",[56,278,279],{},"Share a local server with a teammate through a Cloudflare Tunnel.",[281,282,284],"h2",{"id":283},"connecting-to-supabase-neon-and-rds","Connecting to Supabase, Neon and RDS",[10,286,287,290,291,294],{},[27,288,289],{},"Supabase:"," open your project's ",[27,292,293],{},"Connect"," panel, copy a connection string, and paste it into TableStudio's Host field. Linking your Supabase account adds the host's own tools for that project.",[10,296,297,300],{},[27,298,299],{},"Neon:"," copy the connection string from the project dashboard and paste it in. Link your Neon account to work with branches and the rest of Neon's tools from TableStudio.",[10,302,303,306],{},[27,304,305],{},"Amazon RDS:"," import your RDS instances to add the Postgres ones without copying endpoints by hand.",[281,308,310],{"id":309},"when-postgres-gets-into-trouble","When Postgres gets into trouble",[10,312,313],{},"The problems that take Postgres down are usually slow and silent: transaction IDs creeping toward wraparound, autovacuum that can't keep up, a replication slot nobody uses quietly filling the disk with WAL. TableStudio's health checks read the system catalogs for exactly those. Each finding says what it means and what to do about it, and the ones with a safe fix offer it for your review.",{"title":315,"searchDepth":316,"depth":316,"links":317},"",2,[318,319],{"id":283,"depth":316,"text":284},{"id":309,"depth":316,"text":310},"Browse, edit and query Postgres in a native Mac app, see which indexes your real workload is missing, and let Claude Code, Codex or Cursor work on the database without a free hand on production.","md",[323,326,329,332,335],{"label":324,"content":325},"Is TableStudio a good alternative to Postico or pgAdmin on a Mac?","If you want a native Mac app that goes past browsing, yes. It reads pg_stat_statements for Query Insights, suggests indexes and proves them against the planner, checks for wraparound, bloat and replication trouble, runs local Postgres servers, and gives coding agents a safe way in. It's {price} once after a {days}-day trial.",{"label":327,"content":328},"How does the index advisor decide what to suggest?","It reads the statements Postgres spends its time on from pg_stat_statements, looks for the fewest indexes that cover the most of that time, and tests each one against the planner with a hypothetical index before suggesting it. Nothing is built until you choose to build it.",{"label":330,"content":331},"Does it work with Supabase and Neon?","Yes. Paste the connection string from the project's dashboard into Host and TableStudio fills every field. Link your Supabase or Neon account and the host's own tools, like branches and logs, work next to TableStudio's. Anything irreversible still asks you first.",{"label":333,"content":334},"Do I need pg_stat_statements?","For Query Insights and the index advisor, yes. If it isn't enabled, the dashboard offers to enable it, and the health checks tell you when it's evicting entries.",{"label":336,"content":337},"Can Claude Code or Cursor change my production Postgres database?","Not on their own. Agent reads run in a read-only transaction with a 30-second limit, and a change to production is staged for your review, where you apply it with Touch ID. On a remote Postgres database a data change needs a dry run first, and rolls back if the real row count doesn't match it.","PostgreSQL","2026-10-29",{},true,"\u002Fdatabases\u002Fpostgresql",{"title":344,"description":345},"PostgreSQL Client for Mac with an Index Advisor and MCP","TableStudio is a native Mac PostgreSQL client (GUI) with Query Insights, an index advisor, wraparound and vacuum checks, and a safe MCP server for Claude Code, Codex and Cursor.","4.databases\u002F1.postgresql","9mRkyxu2yzMF0yBj6gdihuidpA0jHbJQ4F_MwnHps1Q",1793299920586]