mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-16 08:42:29 +00:00
This PR is part of the documentation revamp. Once the full set of PRs is merged, we’ll publish the combined site to staging for review before updating docs.lancedb.com. The curation, SQL and operations pages contain outdated claims and examples that do not reliably work as written. This corrects those pages against the reviewed SDK and local server evidence, including prepared statements, background jobs, cleanup and monitoring. Integration guides are grouped with their examples in #4533. Function and Secret-object documentation stays unpublished until its release. The two Function pages are listed in `.mintignore` and left out of the navigation, and the sections about them on other pages are MDX comments. Stacked on #4533. Each MDX file has one PR owner. Rebase onto main after #4533 is squash-merged. Local assembly, Mint validation and link checks pass, and the assembled site shows no Function or Secret-object content. A local release rehearsal that uncomments the drafts and restores the navigation also passes. Hold publication until this PR and lancedb/sophon#8688 are on `main`.
54 lines
2.1 KiB
Plaintext
54 lines
2.1 KiB
Plaintext
---
|
|
title: "Explain"
|
|
sidebarTitle: "Explain"
|
|
description: "EXPLAIN, EXPLAIN ANALYZE and EXPLAIN VERBOSE — reading and measuring a plan from SQL."
|
|
icon: map
|
|
keywords: ["explain", "explain analyze", "explain verbose", "query plan"]
|
|
---
|
|
|
|
<Badge color="red">Enterprise</Badge> [SQL runs in LanceDB Enterprise.](/sql)
|
|
|
|
```sql
|
|
EXPLAIN SELECT * FROM documents WHERE identifier < 1000
|
|
EXPLAIN ANALYZE SELECT * FROM documents WHERE identifier < 1000
|
|
```
|
|
|
|
| Statement | What it returns |
|
|
| --- | --- |
|
|
| `EXPLAIN <query>` | Logical and physical plan, without executing the query. |
|
|
| `EXPLAIN ANALYZE <query>` | Executes the query and annotates each operator with runtime metrics (rows, timing). |
|
|
| `EXPLAIN VERBOSE <query>` | Adds intermediate optimizer plans on top of `EXPLAIN`. |
|
|
|
|
The result is a small relation with `plan_type` and `plan` columns, read
|
|
through the same client you use for regular queries -- see
|
|
[Connecting](/sql#connecting).
|
|
|
|
SQL plans and the SDK's
|
|
[`explain_plan` and `analyze_plan`](/search/explain) output share scan and index
|
|
operators. Use the same approach to inspect index coverage and filter pushdown;
|
|
SQL can also add joins, aggregates and other operators:
|
|
|
|
<CardGroup cols={2}>
|
|
<Card title="What it shows" icon="map" href="/search/explain#inspect-a-query-plan">
|
|
Reading a plan: operators, pushdown, index usage.
|
|
</Card>
|
|
<Card title="What it measures" icon="gauge" href="/search/explain#analyze-a-query-plan">
|
|
Reading the metrics, and a worked before/after.
|
|
</Card>
|
|
</CardGroup>
|
|
|
|
## What to look for {#what-to-look-for}
|
|
|
|
| Sign | Means |
|
|
| --- | --- |
|
|
| `ScalarIndexQuery` | the predicate used a scalar index |
|
|
| `LanceScan` with high `bytes_read` | inspect the selected columns, filter pushdown and index use |
|
|
| `FilterExec` above a search | the filter ran after search rather than pushing into it |
|
|
| `ANNSubIndex` / `ANNIvfPartition` | the vector index was used |
|
|
|
|
A `LanceScan` feeding a join is the common one worth acting on -- see
|
|
[Joins](/sql/dql/join#performance).
|
|
|
|
For a table's columns and types without a plan, see
|
|
[`DESCRIBE`](/sql/ddl/table#describe).
|