边肖想和大家分享一下如何在MYSQL中使用handler。相信大部分人还是不太了解。因此,我想分享这篇文章供你参考。希望你看完这篇文章后收获多多。让我们一起来看看。
HANDLERtbl_nameOPEN[ASalias]
HANDLERtbl _ name readindex _ name {=|=|=| }(值1,值2,)
[where _ where条件][限制.]
HANDLERtbl _ name readindex _ name { FIRST | NEXT | PREV | LAST }
[where _ where条件][限制.]
HANDLERtbl _ name read { FIRST | NEXT }
[where _ where条件][限制.]
HANDLERtbl_nameCLOSEHANDLER语句提供了到表存储引擎接口的直接通道。HANDLER可用于MyISAM和InnoDB表。[@more@]
处理者.OPEN语句用于打开一个表,通过后续的HANDLER建立一个读取表的通道.READ语句。
该表目标不会被其他线程共享,并且在线程调用HANDLER之前不会关闭.关闭或线程终止。
如果使用别名打开表,则必须使用该别名而不是表名来进一步引用具有其他HANDLER语句的表。
如果指定的索引满足给定值并满足WHERE条件,则第一个HANDLER.READ语法取出一行。
如果有多列索引,请将索引列值指定为逗号分隔的列表。您可以为索引中的所有列指定值,
您也可以为索引列最左边的前缀指定一个值。假设一个索引包含三个名为col_a、col_b和col_c的列,它们按此顺序排列。
HANDLER语句可以为索引中的所有三列指定值,或者为最左边前缀中的每一列指定值。举个例子:
处理者.index _ name=(col _ a _ val,col _ b _ val,col _ c _ val).处理者.index _ name=(col _ a _ val,col _ b _ val)。索引的顺序符合WHERE条件。
第三个HANDLER.READ语法按照自然行的顺序从表中取出一行。自然行的顺序满足WHERE条件。
当您想要扫描整个表时,该语句比HANDLER tbl_name READ index_name更快。行的自然顺序是指存储在。
MyISAM表数据文件的顺序。这种说法也适用于InnoDB表,但是没有这样的概念,因为没有独立的数据文件。
没有LIMIT子句,所有形式的HANDLER.READ语句只取出一行。如果要返回多行,应该添加一个LIMIT子句。此声明发表于。
SELECT语句具有相同的语法。参见第13.2.7节“选择语法”。
处理者.CLOSE用于关闭用HANDLER打开的表.打开。
注意:要使用HANDLER接口查找表的主键,请使用带引号的标识符“PRIMARY”:
HANDLERtbl_nameREAD`PRIMARY `(.);HANDLER是一个相对低级的语句。例如,它不提供一致性。也就是说,HANDLER.OPEN不能对表进行快照,也不能锁定表。这意味着,
当HANDLER.OPEN语句被写入时,表数据可以被更改(由这个线程或其他线程),这些更改只会部分出现在HANDLER中.NEXT或HANDLER.PREV扫描。
使用HANDLER接口代替常规的SELECT语句有多个原因:
· HANDLER比SELECT更快:
o 一个指定的存储引擎管理程序目标为了HANDLER...OPEN进行整序。该目标被重新用于该表的后续的HANDLER语句;不需要对每个语句进行重新初始化。
o 涉及的分析较少。
o 没有优化程序或查询校验开销。
o 在两个管理程序请求之间,不需要锁定表。
o 管理程序接口不需要提供外观一致的数据(例如,允许无条理的读取),所以存储引擎可以使用优化,而SELECT通常不允许使用优化。
· 有些应用程序使用与ISAM近似的接口与MySQL连接。使用HANDLER可以更容易地与这些应用程序连接。
· HANDLER允许您采用一种特殊的方式进出数据库。而使用SELECT时难以采用(或不可能采用)这种方式。有些应用程序可以提供一个交
互式的用户接口与数据库连接。当与这些应用程序同时使用时,用HANDLER接口观看数据更加自然。
示例:
mysql> desc test1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a | int(11) | YES | MUL | NULL | |
| b | varchar(45) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
mysql> show index from test1;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| test1 | 1 | ab | 1 | a | A | 4 | NULL | NULL | YES | BTREE | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set (0.00 sec)
mysql> handler test1 open;
Query OK, 0 rows affected (0.00 sec)
mysql> handler test1 read first;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read next;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read next;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read next;
+------+------+
| a | b |
+------+------+
| 3 | 4
|
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read next;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read next;
+------+------+
| a | b |
+------+------+
| 3 | 4
|
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read next;
+------+------+
| a | b |
+------+------+
| 3 | 4
|
+------+------+
mysql> handler test1 read next;
Empty set (0.00 sec)
mysql> handler test1 read next;
Empty set (0.00 sec)
mysql> handler test1 read next;
Empty set (0.00 sec)
mysql> handler test1 read next;
Empty set (0.00 sec)
mysql> handler test1 read ab=(1);
+------+------+
| a | b |
+------+------+
| 1 | 2 |
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read ab=(2);
Empty set (0.00 sec)
mysql> handler test1 read ab=(3);
+------+------+
| a | b |
+------+------+
| 3 | 4
|
+------+------+
1 row in set (0.00 sec)
mysql> handler test1 read ab=(3) limit 10;
+------+------+
| a | b |
+------+------+
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
+------+------+
10 rows in set (0.00 sec)
mysql> handler test1 read ab=(3) limit 20;
+------+------+
| a | b |
+------+------+
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
| 3 | 4
|
+------+------+
10 rows in set (0.00 sec)
以上是“MYSQL中如何使用handler”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52406.html