# `Selecto.Diagnostics`

Query diagnostics helpers (EXPLAIN / EXPLAIN ANALYZE).

# `explain_result`

```elixir
@type explain_result() :: %{
  explain_sql: String.t(),
  query_sql: String.t(),
  params: list(),
  columns: [String.t()],
  rows: list(),
  plan_lines: [String.t()]
}
```

# `build_explain_sql`

```elixir
@spec build_explain_sql(
  String.t(),
  keyword()
) :: String.t()
```

Build the explain SQL wrapper.

# `explain`

```elixir
@spec explain(
  Selecto.t(),
  keyword()
) :: {:ok, explain_result()} | {:error, Selecto.Error.t()}
```

Run `EXPLAIN` for a Selecto query.

# `explain_analyze`

```elixir
@spec explain_analyze(
  Selecto.t(),
  keyword()
) :: {:ok, explain_result()} | {:error, Selecto.Error.t()}
```

Run `EXPLAIN ANALYZE` for a Selecto query.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
