Indexes

SchemaHero supports creating additional indexes on a table; indexes that are neither primary keys or foreign keys. Additional indexes can be on a single column or created from multiple columns.

To add an index, first add any constraints required on the column (notNull, etc). Then at the top level of your schema definition, add the index under a key named indexes.

The definition of the index type is:

indexes:
  - columns: []         # required, an array of columns to include in the index
    name: <string>      # optional, name of the index. if not supplied, SchemaHero will generate
    isUnique: <boolean> # optional, set to true to add a unique constraint

The example below shows a postgres table that has a primary key on the id column, but also adds a unique constraint on a not-nullable column email.

apiVersion: schemas.schemahero.io/v1alpha3
kind: Table
metadata:
  name: users
spec:
  database: my-database
  name: users
  schema:
    postgres:
      primaryKey:
      - id
      indexes:
      - columns:
        - email
        name: idx_users_email
        isUnique: true
      columns:
      - name: id
        type: int
        constraints:
          notNull: true
      - name: email
        type: varchar (255)
        constraints:
          notNull: true