HANDLERtbl_name
OPEN [ ASalias
] HANDLERtbl_name
READindex_name
{ = | >= | <= | < } (value1
,value2
,...) [ WHEREwhere_condition
] [LIMIT ... ] HANDLERtbl_name
READindex_name
{ FIRST | NEXT | PREV | LAST } [ WHEREwhere_condition
] [LIMIT ... ] HANDLERtbl_name
READ { FIRST | NEXT } [ WHEREwhere_condition
] [LIMIT ... ] HANDLERtbl_name
CLOSE
El comando HANDLER
proporciona acceso directo
a las interfaces del motor de la tabla. En MySQL 5.0, está
disponible para tablas MyISAM
y
InnoDB
.
El comando HANDLER ... OPEN
abre una tabla,
haciéndola accesible mediante posteriores comandos
HANDLER ... READ
. Este objeto de tabla no se
comparte con otros flujos y no se cierra hasta que el flujo
llama HANDLER ... CLOSE
o el flujo termina.
Si abre la tabla usando un alias, referencias posteriores a la
tabla con otros comandos HANDLER
deben usar
el alias en lugar del nombre de la tabla.
La primera sintaxis HANDLER ... READ
recibe
un registro donde el índice especificado satisface los valores
dados y la condición WHERE
se cumple. Si
tiene un índice de múltiples columnas, especifique los valores
de la columna índice como una lista separada por comas. Los
valores epecificados para todas las columnas en el índice, o
los valores específicos para un prefijo a la izquierda de las
columnas índice. Suponga que un índice incluye tres columnas
llamadas col_a
, col_b
, y
col_c
, en ese orden. El comando
HANDLER
puede especificar valores para las
tres columnas en el índice, o para las columnas en el prefijo a
la izquierda. Por ejemplo:
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) ...
La segunda sintaxis HANDLER ... READ
recibe
un registro de la tabla en orden del índice que cumple la
condición WHERE
.
La tercera sintaxis HANDLER ... READ
recibe
un registro de la tabla en orden de registro natural que cumple
la condición WHERE
. Es más rápido que
HANDLER
cuando se desea un escaneo completo de
tabla. El orden de registro natural es el orden en que se
almacenan los registros en un fichero de datos de una tabla
tbl_name
READ
index_nameMyISAM
. Este comando funciona para tablas
InnoDB
también, pero no hay tal concepto
porque no hay un fichero de datos separado.
Sin una cláusula LIMIT
, todas las formas de
HANDLER ... READ
reciben un único registros
si una está disponible. Para retornar un número específico de
registros, incluya una cláusula LIMIT
.
Tiene la misma sintaxis que para el comando
SELECT
. Consulte Sección 13.2.7, “Sintaxis de SELECT
”.
HANDLER ... CLOSE
cierra una tabla que se
abrió con HANDLER ... OPEN
.
Nota: Para emplear la interfaz
HANDLER
para referirse a una tabla
PRIMARY KEY
, use el identificador
`PRIMARY`
entrecomillado:
HANDLER tbl_name
READ `PRIMARY` > (...);
HANDLER
es un comando de bajo nivel. Por
ejemplo, no proporciona consistencia. Esto es, HANDLER
... OPEN
no toma una muestra de
la tabla, y no bloquea la tabla. Esto
significa que tras un comando HANDLER ...
OPEN
realizado, los datos de la tabla pueden ser
modificados (por este o por otro flujo) y estas modificaciones
pueden aparecer sólo parcialmente en escaneos HANDLER
... NEXT
o HANDLER ... PREV
.
Hay varias razones para usar la interfaz
HANDLER
en lugar de comandos
SELECT
normales:
HANDLER
es más rápido que
SELECT
:
Un objeto de tratamiento de motor de almacenamiento
designado se reserva para HANDLER ...
OPEN
. El objeto se reúsa para posteriores
comandos HANDLER
para esa tabla; no
necesita reinicializarse para cada una.
Hay menos parseo.
No hay sobrecarga del chequeo de consultas ni optimizador.
La tabla no tiene que estar bloqueada entre peticiones.
La interfaz del handler no tiene que propocionar una
vista de los datos consistente (por ejemplo, se permiten
dirty reads), así que el motor puede usar optimización
que SELECT
no permite.
HANDLER
hace mucho más fácil portar
aplicaciones que usen una interfaz tipo
ISAM
a MySQL.
HANDLER
le permite consultar una base de
datos de forma difícil o imposible de realizar con
SELECT
. La interfaz de
HANDLER
es una forma más natural de
consultar los datos cuando se trabaja con aplicaciones que
proporcionan una interfaz de usuario interactiva a la base
de datos.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.