[{"data":1,"prerenderedAt":499},["ShallowReactive",2],{"project-40028111":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":84,"maker_in_thread":184,"shape":193,"grid":197,"attempts":461,"same_week":462,"maker_shows":401,"maker_hidden":492,"reader_version":493,"card":494},"40028111","index advisor","PostgreSQL index advisor","title","Show HN: PostgreSQL index advisor","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Findex_advisor","github.com","kiwicopple",1713060876,2024,417,97,106,3515,4,"legend","data","database index advisor","library",[24,25,26,27],"postgres index advisor","hypopg","pg_stat_statements","postgresql indexes","curious",0.02,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,18,0,7,30,{"idea":37,"performance":40,"design":41,"execution":43,"docs":44},{"positive":38,"critical":39},1,6,{"positive":33,"critical":38},{"positive":42,"critical":33},2,{"positive":33,"critical":33},{"positive":33,"critical":33},[31,33,33,33,33,38,33,46,38,38,33,46,33,33,33,33,42,33,38,33,33,33,33,33,46,38,46,31,46,46,31,46,46,33,33,33,33,33,33,31],3,"This is a Postgres extension that can determine if a query should have an index. For example, for this table:\n\n\n```\n    create table book(       id int primary key,       title text not null     ); \n```\n You can run `index_advisor()` to see if there should be an index on a select statement:\n\n\n```\n    select *     from index_advisor('select book.id from book where title = $1'); \n```\n And it will return (summarized):\n\n\n```\n    {\"CREATE INDEX ON public.book USING btree (title)\"} \n```\n It works particularly well with pg_stat_statements[0] which tracks execution statistics of all SQL statements exe",{"problem":49,"audience":55,"pricing":63,"motivation":63,"time_to_build":63,"stack":64,"openness":81,"stage":82,"team_size":83},{"value":50,"source":51,"evidence":52},"Determining whether a SQL query should have an index.","maker",[53],{"id":54},"post",{"value":56,"source":57,"evidence":58},"Postgres users, including Supabase platform users.","inferred",[59,60],{"id":54},{"id":61,"by":11,"text":62},"40029293","this is our posture for this extension on the supabase platform. we could automate the creation of the indexes using the Index Advisor, but we feel it would be better to expose…",null,[65,69,77],{"value":66,"source":51,"evidence":67},"PostgreSQL",[68],{"id":54},{"value":70,"source":71,"evidence":72},"PL\u002FpgSQL","commenter",[73],{"id":74,"by":75,"text":76},"40029971","fforflo","The convenient thing about this is that it's written in vanilla Pl\u002FPgSQL. It can be tempting to copy the `index_advisor(text)`function in a session and start hard-coding stuff…",{"value":78,"source":51,"evidence":79},"HypoPG",[80],{"id":54},"open_source","unknown","company",{"praise":85,"objections":97,"requests":113,"questions":128,"alternatives":143},[86,93],{"value":87,"source":71,"evidence":88},"Useful tool; Supabase team delivers",[89],{"id":90,"by":91,"text":92},"40028879","pkiv","The supabase team always delivers. Excited to give this a try!",{"value":94,"source":71,"evidence":95},"Written in plain PL\u002FpgSQL, easy to adapt",[96],{"id":74,"by":75,"text":76},[98,109],{"value":99,"source":71,"evidence":100},"Automatic indexing ignores write costs and tradeoffs",[101,105],{"id":102,"by":103,"text":104},"40029013","elric","I'm sure the database could, but it doesn't mean the database should. Indexes come at the cost of extra disk space, slower inserts, and slower updates. In some cases, some slower…",{"id":106,"by":107,"text":108},"40029004","ComodoHacker","This doesn't seem to consider or give insight on any tradeoffs involved. Also, the underlying extension, HypoPG, doesn't seem to collect any statistics on data to influence query…",{"value":110,"source":71,"evidence":111},"Does not collect statistics to influence planner",[112],{"id":106,"by":107,"text":108},[114,121],{"value":115,"source":71,"evidence":116},"Support for RDS installation",[117],{"id":118,"by":119,"text":120},"40029209","Bishonen88","How does one install this on a aws rds instance?",{"value":122,"source":71,"evidence":123},"Index deletion and merge suggestions",[124],{"id":125,"by":126,"text":127},"40031943","danolivo","Having creation advice, the extension obviously must provide candidates to delete and, less obvious, candidates to merge some indexes.",[129,136],{"value":130,"source":71,"evidence":131},"Is the advisor cost-based or rule-based, and how reliable is it?",[132],{"id":133,"by":134,"text":135},"40060222","SiliconGuru","I need such a tool. The only concern is whether this advisor can really give reliable indexing advice? Is it based on cost or rules? Maybe I would dare to use it after knowing…",{"value":137,"source":71,"evidence":138},"Does it handle inherited parent and child tables?",[139],{"id":140,"by":141,"text":142},"40030302","gregw2","Is this aware of parent and child inherited tables?",[144,155,166,173],{"value":145,"source":71,"evidence":146},"pganalyze index advisor",[147,151],{"id":148,"by":149,"text":150},"40031306","Ozzie_osman","My team has been using Pganalyze (which has its own index advisor), and honestly, it's one of my favorite technical tools ever. I don't know how you could run a large-scale…",{"id":152,"by":153,"text":154},"40029083","CAP_NET_ADMIN","If you have some PostgreSQL performance issues, I'd recommend checking out PGAnalyze - they've offered a much more advanced index advisor for some time now. My company is a paid…",{"value":156,"source":71,"evidence":157},"dexter",[158,162],{"id":159,"by":160,"text":161},"40032584","b3lm0nt","Andrew Kane built dexter, which is an automatic indexer for Postgres. https:\u002F\u002Fgithub.com\u002Fankane\u002Fdexter https:\u002F\u002Fankane.org\u002Fintroducing-dexter",{"id":163,"by":164,"text":165},"40029276","jensenbox","dexter uses a similar premise with hypog. https:\u002F\u002Fgithub.com\u002Fankane\u002Fdexter",{"value":167,"source":71,"evidence":168},"pg_hint_plan",[169],{"id":170,"by":171,"text":172},"40028799","justinclift","Guessing you've seen this already and it's not doing what you want? https:\u002F\u002Fgithub.com\u002Fossc-db\u002Fpg_hint_plan",{"value":174,"source":71,"evidence":175},"SQL Server \u002F Azure SQL automatic tuning",[176,180],{"id":177,"by":178,"text":179},"40028983","tuwtuwtuwtuw","That exists in Microsoft SQL Server. It can create new indexes, drop unused indexes, change query plans when it detect degradation and so on.",{"id":181,"by":182,"text":183},"40030293","Ciantic","\"Automatic tuning, introduced in SQL Server 2017 (14.x), notifies you whenever a potential performance issue is detected and lets you apply corrective actions, or lets the…",{"comments":18,"answered":38,"key":185},[186,187,190],{"id":61,"text":62},{"id":188,"text":189},"40028774","i don't know how far it was developed, but I believe pg_plan_guarantee[0] was created to solve this sort of issue > This extension provides a mechanism, using which you can set…",{"id":191,"text":192},"40029407","Andrew builds some amazing tools for the postgres ecosystem (he is also the creator of pgvector)",{"commenters":194,"max_depth":39,"maker_replies":18,"first_comment_mins":195,"lifespan_hours":196},70,141,74,[198,202,205,207,209,213,214,217,219,221,224,227,230,233,235,237,240,244,247,250,253,256,259,262,266,270,273,276,280,282,285,288,290,293,296,298,300,304,307,310,313,316,318,320,323,326,327,329,332,334,336,338,342,344,346,347,350,353,355,357,360,363,364,365,368,369,372,375,379,383,385,387,391,394,397,400,402,405,408,410,414,416,419,422,425,427,429,430,433,436,439,442,445,447,449,454,457],[199,33,31,200,201,33],"40028894","project\u002Fpositive\u002Fidea","sbstp",[203,33,33,204,107,33],"40028982","other\u002Fneutral\u002Fpricing",[206,33,33,204,178,33],"40028995",[177,33,33,208,178,33],"other\u002Fneutral\u002Fnone",[210,33,33,211,212,33],"40030174","commenter\u002Fneutral\u002Fnone","BrentOzar",[181,33,33,211,182,33],[215,33,33,211,216,33],"40030798","couchand",[218,33,33,211,212,33],"40031065",[220,33,33,211,178,33],"40030380",[222,33,33,211,223,33],"40030554","hobs",[225,33,33,211,226,33],"40032313","simplyinfinity",[228,33,33,208,229,33],"40031246","radicalbyte",[231,33,33,211,232,33],"40031130","taspeotis",[102,33,38,234,103,33],"project\u002Fcritical\u002Fidea",[61,33,33,236,11,38],"maker\u002Fneutral\u002Fidea",[238,33,33,211,239,33],"40030891","gneray",[241,33,46,242,243,33],"40032627","project\u002Fneutral\u002Fidea","dmurray",[245,33,46,242,246,33],"40032671","d0100",[248,33,46,242,249,33],"40033134","remus",[251,33,38,234,252,33],"40029099","masklinn",[254,33,46,242,255,33],"40032438","fulafel",[257,33,38,234,258,33],"40032600","freedomben",[260,33,46,242,261,33],"40029162","arronax",[263,33,38,264,265,33],"40031277","project\u002Fcritical\u002Fperformance","Tostino",[267,33,33,268,269,33],"40034210","commenter\u002Fneutral\u002Fperformance","rand_r",[271,33,33,268,272,33],"40035281","adamcharnock",[274,33,33,275,265,33],"40051249","other\u002Fneutral\u002Fperformance",[277,33,46,278,279,33],"40035384","project\u002Fneutral\u002Fperformance","paulryanrogers",[281,33,33,208,243,33],"40032585",[283,33,33,275,284,33],"40033079","Scene_Cast2",[286,33,33,268,287,33],"40033869","legulere",[289,33,33,268,284,33],"40035926",[291,33,33,275,292,33],"40036582","atwebb",[294,33,33,275,295,33],"40037063","magicalhippo",[297,33,33,275,261,33],"40041663",[159,33,33,299,160,33],"other\u002Fneutral\u002Fidea",[301,33,33,302,303,33],"40032605","other\u002Fcritical\u002Fidea","ed_balls",[305,33,33,299,306,33],"40032607","GordonS",[308,38,46,242,309,33],"40031524","brightball",[311,38,38,234,312,33],"40034288","klysm",[314,38,46,242,315,33],"40034521","jpgvm",[317,38,33,211,312,33],"40042452",[319,38,33,211,315,33],"40042964",[321,38,38,234,322,33],"40043382","chrisandchris",[324,42,33,275,325,33],"40028694","jitl",[188,42,33,275,11,38],[328,42,33,275,325,33],"40034808",[330,42,33,204,331,33],"40034926","jaggederest",[333,42,33,204,325,33],"40036887",[335,42,33,208,331,33],"40037349",[337,42,33,275,331,33],"40028794",[339,42,33,340,341,33],"40034071","commenter\u002Fcritical\u002Fperformance","krembo",[343,42,33,268,331,33],"40034916",[345,42,33,275,325,33],"40036874",[170,42,33,275,171,33],[348,42,33,349,325,33],"40036914","other\u002Fpositive\u002Fnone",[351,42,33,275,352,33],"40028864","polishdude20",[354,42,33,275,325,33],"40036920",[356,42,33,275,261,33],"40029216",[358,46,46,242,359,33],"40029226","crorella",[361,18,33,208,362,33],"40029335","PikachuEXE",[191,18,33,208,11,38],[106,31,38,234,107,33],[366,39,46,242,367,33],"40029409","dveeden2",[133,34,46,242,134,33],[74,370,31,371,75,33],8,"project\u002Fpositive\u002Fdesign",[373,370,31,371,374,33],"40030892","victorbjorklund",[376,370,46,377,378,33],"40031896","project\u002Fneutral\u002Fexecution","pokipoke",[380,381,46,242,382,33],"40031713",9,"vvern",[384,381,33,211,126,33],"40031902",[163,386,46,242,164,33],10,[388,389,33,208,390,33],"40028821",11,"itsgrimetime",[392,389,33,208,393,33],"40028971","winrid",[395,389,33,208,396,33],"40039861","garyal",[90,398,31,399,91,33],12,"maker\u002Fpositive\u002Fnone",[140,401,46,377,141,33],13,[118,403,46,404,119,33],14,"project\u002Fneutral\u002Fdocs",[406,403,33,407,11,38],"40029305","maker\u002Fneutral\u002Fdocs",[125,409,46,242,126,33],15,[411,412,33,208,413,33],"40031774",16,"icang888",[148,415,33,208,149,33],17,[417,415,33,208,418,33],"40031837","lfittl",[420,415,33,208,421,33],"40032241","polivier",[423,415,33,208,424,33],"40033285","Rapzid",[426,415,33,208,418,33],"40033485",[428,415,33,211,424,33],"40033559",[152,32,33,302,153,33],[431,32,33,275,432,33],"40029125","allan_s",[434,32,33,211,435,33],"40029230","xvinci",[437,32,33,211,438,33],"40029810","mrklol",[440,32,33,211,441,33],"40029928","thom",[443,32,33,211,444,33],"40030443","dz08dl",[446,32,33,211,295,33],"40030912",[448,32,33,211,295,33],"40030860",[450,451,31,452,453,33],"40032061",19,"project\u002Fpositive\u002Fnone","cpursley",[455,451,33,208,456,33],"40035159","asah",[458,459,46,278,460,33],"40030132",20,"l5870uoo9y",[],[463,468,473,478,483,488],{"id":464,"name":465,"points":466,"category":467},"40003710","OptiGap sensor",886,"hardware",{"id":469,"name":470,"points":471,"category":472},"40041198","gypsum",552,"learning_science",{"id":474,"name":475,"points":476,"category":477},"40017180","Mazelit",517,"games",{"id":479,"name":480,"points":481,"category":482},"40033490","markdowndown",441,"productivity",{"id":484,"name":485,"points":486,"category":487},"40067677","Effort",419,"ai",{"id":489,"name":490,"points":491,"category":467},"40014937","Recovery Kit 2",403,false,"v2",{"id":495,"name":5,"line":6,"ai":492,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":496,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":497,"url":9,"mix":498,"praise":87,"objection":99,"sub":21},40028111,[24,25,26,27],"5000010311030000201000003135335330000005",[31,32,33,34],1793991088884]