{
  "slug": "sqlite-without-rowid",
  "term": "SQLite WITHOUT ROWID table",
  "aliases": [
    "WITHOUT ROWID table"
  ],
  "definition": "A SQLite WITHOUT ROWID table stores its rows in an index b-tree keyed by its declared primary key instead of a separate integer rowid.",
  "note": "Every such table needs a primary key, and INTEGER PRIMARY KEY does not become an alias for rowid. AUTOINCREMENT and incremental BLOB I/O are unavailable for this table kind. It is a schema choice, not a universal speed or space improvement. [without-rowid]\n\nThe row's columns are encoded in the index b-tree key; unlike ordinary table b-trees, index b-trees can hold record payload in internal cells as well as leaves. [sqlite-format] In 12 generated fixtures, all 512 rows were recovered while leaf-only cell counts omitted records held internally; the observations are not a workload benchmark. [hesela-layout]\n\nSecondary indexes carry primary-key columns instead of rowid. A primary-key column already indexed with the same collation is not repeated in the suffix; a different collation can require another occurrence. [sqlite-format]",
  "related": [
    "sqlite-rowid",
    "b-tree",
    "b-plus-tree"
  ],
  "citations": [
    {
      "id": "without-rowid",
      "title": "SQLite: Clustered Indexes and the WITHOUT ROWID Optimization",
      "url": "https://www.sqlite.org/withoutrowid.html",
      "accessed": "2026-10-22"
    },
    {
      "id": "sqlite-format",
      "title": "SQLite database file format: b-tree pages and WITHOUT ROWID representation",
      "url": "https://www.sqlite.org/fileformat2.html",
      "accessed": "2026-10-22"
    },
    {
      "id": "hesela-layout",
      "title": "Hesela: 12 controlled SQLite b-tree layout observations, source identity and limits",
      "url": "https://hesela.dev/research/btree-layout/results.json",
      "accessed": "2026-10-22"
    },
    {
      "id": "hesela-buffered",
      "title": "Hesela: B-epsilon trees, B-tree foundations and observed page placement",
      "url": "https://hesela.com/analyses/b-epsilon-trees-buffered-updates/",
      "accessed": "2026-10-22"
    }
  ],
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-22"
}
