:: DEVELOPER ZONE
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 14.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.
© 1995-2005 MySQL AB. All rights reserved.
