:: DEVELOPER ZONE
HANDLER nome_tabela OPEN [ AS alias ]
HANDLER nome_tabela READ nome_indice { = | >= | <= | < } (valor1,valor2,...)
[ WHERE ... ] [LIMIT ... ]
HANDLER nome_tabela READ nome_indice { FIRST | NEXT | PREV | LAST }
[ WHERE ... ] [LIMIT ... ]
HANDLER nome_tabela READ { FIRST | NEXT }
[ WHERE ... ] [LIMIT ... ]
HANDLER nome_tabela CLOSE
A instrução HANDLER fornece acesso direto a interface do mecanismo de
armazenamento de tabelas MyISAM.
A primeira forma da instrução HANDLER abre uma tabela, tornando a
acessível através de subsequentes instruções HANDLER ... READ. Este
objeto de tabela não é copartilhada com outras threads e não serão fechadas até
que as chamadas de thread HANDLER nome_tabela CLOSE ou a thread termine.
A segunda forma busca um registro (ou mais, especificado pela cláusula
LIMIT) onde o índice especificado satisfaz os valores dados e a
condição WHERE é encontrada. Se você tiver um índice multi-coluna,
especifique as colunas do índice como uma lista separadas por vírgulas.
Especifique o valor de todas as colunas no índice, ou especifique valores
para o prefixo mais a esquerda das colunas índices. Suponha que um índice
inclui três colunas chamadas col_a, col_b, e col_c,
nesta ordem. A instrução HANDLER pode especificar valores para todas
as três colunas no índice, ou para as colunas no prefixo mais a esquerda.
Por exemplo:
HANDLER ... index_name = (col_a_val,col_b_val,col_c_val) ... HANDLER ... index_name = (col_a_val,col_b_val) ... HANDLER ... index_name = (col_a_val) ...
A terceira forma busca uma linha (ou mais, especificado pela cláusula
LIMIT) da tabela na ordem do índice, correspondendo a condição WHERE.
A quarta forma (sem especificação de índice) busca um registro (ou mais, especificado
pela cláusula LIMIT) da tabela na ordem natural da linhas (como armazenado no
arquivo de dados) de acordo com a condição WHERE é mais rápido que
HANDLER nome_tabela READ nome_indice quando é necessária uma varredura completa
da tabela.
HANDLER ... CLOSE fecha uma tabela que foi aberta com
HANDLER ... OPEN.
Nota: Se você estiver utilizando a interface HANDLER para
PRIMARY KEY você deve se lembrar de colocar o nome entre aspas:
HANDLER tbl READ `PRIMARY` > (...)
HANDLER é uma instrução de baixo nível. Por exemplo, ela não fornece
consitência. Isto é, HANDLER ... OPEN NÃO pega uma imagem
instântanea da tabela, e NÃO trava a tabela. Isto significa que
depois que um HANDLER ... OPEN é feito, os dados da tabela podem
ser modificados (por esta ou outra thread) e estas modificações podem aparecer
apenas parcialmente nas buscas HANDLER ... NEXT ou HANDLER ... PREV.
As razões para se utilizar esta interface em vez do SQL normal são:
Ela é mais rápida que SELECT porque:
Um mecanismo de armazenamento designado é alocado pela thread em HANDLER OPEN.
Existe menos análise envolvida.
Nào existe sobrecaga de otimização e verificação de consultas.
A tabela utilizada não precisa estar travada em pedidos de dois handlers.
A interface handler não precisa fornecer uma aprência consistente dos dados (por exemplo, dirty-reads são permitidas), assim o mecanismo de armazenamento pode fazer otimizações que o SQL normalmente não permite.
É muito mais fácil portar aplicações que usam interface como ISAM para o MySQL.
Ele permite se fazer uma travessia em um banco de dados de uma maneira que não é facil (em alguns casos impossível) de fazer com SQL. A interface handler é um modo mais natural de mostrar dados ao trabalhar com aplicações que fornecem uma interface interativa com o usuário para o banco de dados.
© 1995-2005 MySQL AB. All rights reserved.
