🍺 BREW Explorer

← all formulae

hypopg

brew install hypopg v1.4.3 PostgreSQL

Hypothetical Indexes for PostgreSQL

16
30-day installs · #7325
38
90-day · #8040
173
365-day · #7719
1.7k
★ GitHub stars · updated 2mo ago

Build dependencies

GitHub topics

c database extension hypothetical-indexes index indexing postgresql

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "postgresql@17",
    "postgresql@18"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Hypothetical Indexes for PostgreSQL",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:38:43+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "hypopg",
  "github_default_branch": "REL1_STABLE",
  "github_last_commit_at": "2026-06-19T23:40:27Z",
  "github_readme_excerpt": "HypoPG\n=======\n\nHypoPG is a PostgreSQL extension adding support for hypothetical indexes.\n\nA hypothetical -- or virtual -- index is an index that doesn\u0027t really exist, and\nthus doesn\u0027t cost CPU, disk or any resource to create.  They\u0027re useful to know\nif specific indexes can increase performance for problematic queries, since\nyou can know if PostgreSQL will use these indexes or not without having to\nspend resources to create them.\n\nFor more thorough information, please consult the [official\ndocumentation](https://hypopg.readthedocs.io).\n\nFor other general information, you can also consult [this blog\npost](https://rjuju.github.io/postgresql/2015/07/02/how-about-hypothetical-indexes.html).\n\nInstallation\n------------\n\n- Compatible with PostgreSQL 9.2 and above\n- Needs PostgreSQL header files\n- Decompress the tarball\n- `sudo make install`\n- In every needed database: `CREATE EXTENSION hypopg;`\n\n\nUpdating the extension\n----------------------\n\nNote that hypopg doesn\u0027t provide extension upgrade scripts, as there\u0027s no\ndata saved in any of the objects created.  Therefore, you need to first drop\nthe extension then create it again to get the new version.\n\nUsage\n-----\n\nNOTE: The hypothetical indexes are contained in a single backend. Therefore,\nif you add multiple hypothetical indexes, concurrent connections doing\n`EXPLAIN` won\u0027t be bothered by your hypothetical indexes.\n\nAssuming a simple test case:\n\n    rjuju=# CREATE TABLE hypo AS SELECT id, \u0027line \u0027 || id AS val FROM generate_series(1,10000) id;\n    rjuju=# EXPLAIN SELECT * FROM hypo WHERE id = 1;\n                          QUERY PLAN\n    -------------------------------------------------------\n     Seq Scan on hypo  (cost=0.00..180.00 rows=1 width=13)\n       Filter: (id = 1)\n    (2 rows)\n\n\nThe easiest way to create an hypothetical index is to use the\n`hypopg_create_index` functions with a regular `CREATE INDEX` statement as arg.\n\nFor instance:\n\n    rjuju=# SELECT * FROM hypopg_create_index(\u0027CREATE INDEX ON hypo (id)\u0027);\n\nNOTE: S",
  "github_repo": "HypoPG/hypopg",
  "github_stars": 1664,
  "github_topics": [
    "c",
    "database",
    "extension",
    "hypothetical-indexes",
    "index",
    "indexing",
    "postgresql"
  ],
  "homepage": "https://github.com/HypoPG/hypopg",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 16,
  "installs_365d": 173,
  "installs_90d": 38,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "PostgreSQL",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "hypopg",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 7325,
  "rank_365d": 7719,
  "rank_90d": 8040,
  "raw_hash": "fc2eb47764e8b376",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/h/hypopg.rb",
  "tap": "homebrew/core",
  "test_dependencies": [
    "postgresql@17",
    "postgresql@18"
  ],
  "uses_from_macos": [],
  "version_head": null,
  "version_stable": "1.4.3",
  "versioned_formulae": [],
  "why_use_this": null
}