r"""Add an indexing or other executional context hint for the given selectable to this :class:`_expression.Select` or other selectable object. .. tip:: The :meth:`_expression.Select.with_hint` method adds hints that are **specific to a single table**
(
self,
selectable: _FromClauseArgument,
text: str,
dialect_name: str = "*",
)
| 525 | |
| 526 | @_generative |
| 527 | def with_hint( |
| 528 | self, |
| 529 | selectable: _FromClauseArgument, |
| 530 | text: str, |
| 531 | dialect_name: str = "*", |
| 532 | ) -> Self: |
| 533 | r"""Add an indexing or other executional context hint for the given |
| 534 | selectable to this :class:`_expression.Select` or other selectable |
| 535 | object. |
| 536 | |
| 537 | .. tip:: |
| 538 | |
| 539 | The :meth:`_expression.Select.with_hint` method adds hints that are |
| 540 | **specific to a single table** to a statement, in a location that |
| 541 | is **dialect-specific**. To add generic optimizer hints to the |
| 542 | **beginning** of a statement ahead of the SELECT keyword such as |
| 543 | for MySQL or Oracle Database, use the |
| 544 | :meth:`_expression.Select.prefix_with` method. To add optimizer |
| 545 | hints to the **end** of a statement such as for PostgreSQL, use the |
| 546 | :meth:`_expression.Select.with_statement_hint` method. |
| 547 | |
| 548 | The text of the hint is rendered in the appropriate |
| 549 | location for the database backend in use, relative |
| 550 | to the given :class:`_schema.Table` or :class:`_expression.Alias` |
| 551 | passed as the |
| 552 | ``selectable`` argument. The dialect implementation |
| 553 | typically uses Python string substitution syntax |
| 554 | with the token ``%(name)s`` to render the name of |
| 555 | the table or alias. E.g. when using Oracle Database, the |
| 556 | following:: |
| 557 | |
| 558 | select(mytable).with_hint(mytable, "index(%(name)s ix_mytable)") |
| 559 | |
| 560 | Would render SQL as: |
| 561 | |
| 562 | .. sourcecode:: sql |
| 563 | |
| 564 | select /*+ index(mytable ix_mytable) */ ... from mytable |
| 565 | |
| 566 | The ``dialect_name`` option will limit the rendering of a particular |
| 567 | hint to a particular backend. Such as, to add hints for both Oracle |
| 568 | Database and MSSql simultaneously:: |
| 569 | |
| 570 | select(mytable).with_hint( |
| 571 | mytable, "index(%(name)s ix_mytable)", "oracle" |
| 572 | ).with_hint(mytable, "WITH INDEX ix_mytable", "mssql") |
| 573 | |
| 574 | .. seealso:: |
| 575 | |
| 576 | :meth:`_expression.Select.with_statement_hint` |
| 577 | |
| 578 | :meth:`_expression.Select.prefix_with` - generic SELECT prefixing |
| 579 | which also can suit some database-specific HINT syntaxes such as |
| 580 | MySQL or Oracle Database optimizer hints |
| 581 | |
| 582 | """ |
| 583 | |
| 584 | return self._with_hint(selectable, text, dialect_name) |
nothing calls this directly
no test coverage detected