diff --git a/TOC.md b/TOC.md index 63f3956677b26..9593bf1508253 100644 --- a/TOC.md +++ b/TOC.md @@ -215,6 +215,7 @@ + [`COMMIT`](/sql-statements/sql-statement-commit.md) + [`CHANGE DRAINER`](/sql-statements/sql-statement-change-drainer.md) + [`CHANGE PUMP`](/sql-statements/sql-statement-change-pump.md) + + [`CREATE BINDING`](/sql-statements/sql-statement-create-binding.md) + [`CREATE DATABASE`](/sql-statements/sql-statement-create-database.md) + [`CREATE INDEX`](/sql-statements/sql-statement-create-index.md) + [`CREATE SEQUENCE`](/sql-statements/sql-statement-create-sequence.md) @@ -227,6 +228,7 @@ + [`DESC`](/sql-statements/sql-statement-desc.md) + [`DESCRIBE`](/sql-statements/sql-statement-describe.md) + [`DO`](/sql-statements/sql-statement-do.md) + + [`DROP BINDING`](/sql-statements/sql-statement-drop-binding.md) + [`DROP COLUMN`](/sql-statements/sql-statement-drop-column.md) + [`DROP DATABASE`](/sql-statements/sql-statement-drop-database.md) + [`DROP INDEX`](/sql-statements/sql-statement-drop-index.md) @@ -264,6 +266,7 @@ + [`SET [GLOBAL|SESSION] `](/sql-statements/sql-statement-set-variable.md) + [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md) + [`SHOW [BACKUPS|RESTORES]`](/sql-statements/sql-statement-show-backups.md) + + [`SHOW BINDINGS`](/sql-statements/sql-statement-show-bindings.md) + [`SHOW BUILTINS`](/sql-statements/sql-statement-show-builtins.md) + [`SHOW CHARACTER SET`](/sql-statements/sql-statement-show-character-set.md) + [`SHOW COLLATION`](/sql-statements/sql-statement-show-collation.md) diff --git a/sql-statements/sql-statement-create-binding.md b/sql-statements/sql-statement-create-binding.md new file mode 100644 index 0000000000000..7e7f095eaac49 --- /dev/null +++ b/sql-statements/sql-statement-create-binding.md @@ -0,0 +1,42 @@ +--- +title: CREATE BINDING +summary: Use of CREATE BINDING in TiDB database. +category: reference +--- + +# CREATE BINDING + +The `CREATE BINDING` statement is used to create a new SQL bind on TiDB. + +## Synopsis + +**CreateBindingStmt:** + +![CreateBindingStmt](/media/sqlgram/CreateBindingStmt.png) + +**GlobalScope:** + +![GlobalScope](/media/sqlgram/GlobalScope.png) + +**SelectStmt** + +![SelectStmt](/media/sqlgram/SelectStmt.png) + +**** + +## Syntax description + +{{< copyable "sql" >}} + +```sql +CREATE [GLOBAL | SESSION] BINDING FOR SelectStmt USING SelectStmt; +``` + +This statement binds SQL execution plans at the GLOBAL or SESSION scope. The default scope is SESSION. + +The bound SQL statement is parameterized and stored in the system table. When a SQL query is processed, as long as the parameterized SQL statement and a bound one in the system table are consistent and the system variable `tidb_use_plan_baselines` is set to `on` (`on` by default), the corresponding optimizer hint is available. If multiple execution plans are available, the optimizer chooses to bind the plan with the least cost. + +## See also + +* [DROP BINDING](/sql-statements/sql-statement-drop-binding.md) +* [SHOW BINDINGS](/sql-statements/sql-statement-show-bindings.md) diff --git a/sql-statements/sql-statement-drop-binding.md b/sql-statements/sql-statement-drop-binding.md new file mode 100644 index 0000000000000..27fcf8b6e4414 --- /dev/null +++ b/sql-statements/sql-statement-drop-binding.md @@ -0,0 +1,38 @@ +--- +title: DROP BINDING +summary: Use of DROP BINDING in TiDB database. +category: reference +--- + +# DROP BINDING + +The `DROP BINDING` statement is used to drop a SQL bind on TiDB. + +## Synopsis + +**DropBindingStmt:** + +![DropBindingStmt](/media/sqlgram/DropBindingStmt.png) + +**GlobalScope:** + +![GlobalScope](/media/sqlgram/GlobalScope.png) + +**SelectStmt** + +![SelectStmt](/media/sqlgram/SelectStmt.png) + +## Syntax description + +{{< copyable "sql" >}} + +```sql +DROP [GLOBAL | SESSION] BINDING FOR SelectStmt; +``` + +This statement removes a specified execution plan binding at the GLOBAL or SESSION level. The default scope is SESSION. + +## See also + +* [CREATE BINDING](/sql-statements/sql-statement-create-binding.md) +* [SHOW BINDINGS](/sql-statements/sql-statement-show-bindings.md) diff --git a/sql-statements/sql-statement-show-bindings.md b/sql-statements/sql-statement-show-bindings.md new file mode 100644 index 0000000000000..c9d9681eb21cd --- /dev/null +++ b/sql-statements/sql-statement-show-bindings.md @@ -0,0 +1,53 @@ +--- +title: SHOW BINDINGS +summary: Use of SHOW BINDINGS binding in TiDB database. +category: reference +--- + +# SHOW BINDINGS + +The `SHOW BINDINGS` statement is used to display information about all created SQL bindings. + +## Synopsis + +**ShowStmt:** + +![ShowStmt](/media/sqlgram/ShowStmt.png) + +**ShowTargetFilterable:** + +![ShowTargetFilterable](/media/sqlgram/ShowTargetFilterable.png) + +**GlobalScope:** + +![GlobalScope](/media/sqlgram/GlobalScope.png) + +**ShowLikeOrWhereOpt** + +![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) + +## Syntax description + +{{< copyable "sql" >}} + +```sql +SHOW [GLOBAL | SESSION] BINDINGS [ShowLikeOrWhereOpt]; +``` + +This statement outputs the execution plan bindings at the GLOBAL or SESSION level. The default scope is SESSION. Currently `SHOW BINDINGS` outputs eight columns, as shown below: + +| Column Name | Description | +| :-------- | :------------- | +| original_sql | Original SQL statement after parameterization | +| bind_sql | Bound SQL statement with hints | +| default_db | Default database | +| status | Status including 'Using', 'Deleted', 'Invalid', 'Rejected', and 'Pending verification'| +| create_time | Created time | +| update_time | Updated time | +| charset | Character set | +| collation | Sorting rule | + +## See also + +* [CREATE BINDING](/sql-statements/sql-statement-create-binding.md) +* [DROP BINDING](/sql-statements/sql-statement-drop-binding.md)