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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.