HANDLER tbl_name OPEN [ AS alias ] HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...) [ WHERE ... ] [LIMIT ... ] HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE ... ] [LIMIT ... ] HANDLER tbl_name READ { FIRST | NEXT } [ WHERE ... ] [LIMIT ... ] HANDLER tbl_name CLOSE
La commande HANDLER
fournit un accès direct
à l'interface de gestion de la table MyISAM
.
La première forme de HANDLER
ouvre la table,
la rendant accessible via la requête HANDLER ...
READ
qui la suit. Cette objet table n'est pas partagé
par les autres threads et ne sera refermé que si le thread
appelle HANDLER nom_de_table CLOSE
ou que
celui ci se termine.
La seconde forme récupère une ligne (ou plus, à spécifier
dans la clause LIMIT
) où l'index spécifié
remplit les conditions et où la clause WHERE
est répondue. Si l'index se compose de plusieurs parties,
(s'étend sur plusieurs colonnes) les valeurs sont spécifiées
dans une liste séparée par des virgules, fournir des valeurs
pour quelques premières colonnes est possible. Par exemple :
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 troisième forme récupère une ligne (ou plus, à spécifier
dans la clause LIMIT
) de la table dans
l'ordre de l'index, qui répond à la clause
WHERE
.
La quatrième forme (sans spécifications relatives à l'index)
récupère une ligne (ou plus, à spécifier dans la clause
LIMIT
) de la table dans un ordre naturel des
lignes (comme stocké dans le fichier de données) qui
correspond à la condition WHERE
. C'est plus
rapide que HANDLER nom_de_table READ
nom_index
quand une lecture entière de la table est
requise. See Section 13.1.7, « Syntaxe de SELECT
».
HANDLER ... CLOSE
ferme une table qui a été
ouverte avec HANDLER ... OPEN
.
Note : pour utiliser l'interface HANDLER
avec la clé primaire d'une table PRIMARY
KEY
, utilisez l'identifiant entre guillemets obliques
`PRIMARY`
:
HANDLER tbl_name READ `PRIMARY` > (...);
HANDLER
est en quelque sorte une commande
bas-niveau. Par exemple, elle ne propose pas de consistance. En
clair, HANDLER ... OPEN
ne se base
pas sur une image de la table, et ne
verrouille pas la table. Cela signifie
qu'après l'exécution d'une requête HANDLER ...
OPEN
, les données de la table peuvent être
modifiées (par ce ou un autre thread) et ces modifications
peuvent apparaître partiellement dans les lectures de
HANDLER ... NEXT
ou HANDLER ...
PREV
.
Les raisons d'utiliser cette interface plutôt que les commandes MySQL usuelles sont :
Plus rapide qu'un SELECT
car :
Un pointeur sur table dédié est alloué au thread dans
HANDLER open
.
Il y a moins de traitements.
Pas de pertes de temps en optimisation ou vérifications de requêtes.
La table utilisée n'a pas besoin d'être verrouillée entre deux requêtes de gestion.
L'interface de gestion n'a pas à fournir une vue consistante des données (par exemple, les lectures corrompues sont autorisées), ce qui permet au gestionnaire d'effectuer des optimisations que SQL ne permet pas.
Cela facilite le port des applications qui utilisent l'interface ISAM pour MySQL.
Cela permet de traverse plus facilement la base de données qu'avec SQL (dans certains cas, cette opération est impossible avec SQL). L'interface de gestion amène une fa¸on plus naturelle de manipuler les données lorsque vous travaillez avec des applications qui proposent une interface interactive entre l'utilisateur et la base de données.
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.