Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-09-29 GMT+08:00

Uso

Tabela 1 Descrição do parâmetro

Parâmetro

Nível

Descrição

optimizer_switch

Global, Session

Ativa ou desativa a otimização de consulta.

Depois que esse parâmetro for ativado, você poderá configurar offset_pushdown para ativar ou desativar o pushdown LIMIT OFFSET.

  • ON: ativado
  • OFF: (valor padrão): desativado

Você também pode adicionar uma cláusula HINT para ativar ou desativar o pushdown LIMIT OFFSET.

  • OFFSET_PUSHDOWN(table_name): ativado
  • NO_OFFSET_PUSHDOWN(table_name): desativado

Exemplo:

Tome um esquema como um exemplo em um teste TPC-H. Depois que o pushdown LIMIT OFFSET é ativado usando o parâmetro ou a cláusula HINT, Using limit-offset pushdown é exibido na coluna Extra quando você executa EXPLAIN SQL para exibir um plano de execução.

  • Ativação do pushdown LIMIT OFFSET configurando offset_pushdown
    mysql> EXPLAIN SELECT * FROM lineitem LIMIT 10000000,10;
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+
    | id | select_type | table   | partitions | type | possible_keys | key | key_len | ref | rows     | filtered | Extra                 |
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+
    | 1 | SIMPLE     | lineitem | NULL       | ALL | NULL         | NULL | NULL   | NULL | 59281262 |   100.00 | Using offset pushdown |
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+
    1 row in set, 1 warning (0.00 sec)
    ​
  • Ativação do pushdown LIMIT OFFSET adicionando uma cláusula HINT
    mysql> EXPLAIN SELECT /*+ OFFSET_PUSHDOWN() */ * FROM lineitem LIMIT 10000000,10;
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+
    | id | select_type | table   | partitions | type | possible_keys | key | key_len | ref | rows     | filtered | Extra                 |
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+
    | 1 | SIMPLE     | lineitem | NULL       | ALL | NULL         | NULL | NULL   | NULL | 59281262 |   100.00 | Using offset pushdown |
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-----------------------+
    1 row in set, 1 warning (0.00 sec)
    ​
    mysql> EXPLAIN SELECT /*+ NO_OFFSET_PUSHDOWN() */ * FROM lineitem LIMIT 10000000,10;
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-------+
    | id | select_type | table   | partitions | type | possible_keys | key | key_len | ref | rows     | filtered | Extra |
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-------+
    | 1 | SIMPLE     | lineitem | NULL       | ALL | NULL         | NULL | NULL   | NULL | 59281262 |   100.00 | NULL |
    +----+-------------+----------+------------+------+---------------+------+---------+------+----------+----------+-------+
    1 row in set, 1 warning (0.00 sec)