Uso
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.
|
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)