HANDLER tbl_name OPEN [ [AS] alias]
HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name CLOSE
HANDLER...OPEN语句用于打开一个表,通过后续的HANDLER...READ语句建立读取表的通道。
本表目标不会被其它线程共享,也不会关闭,直到线程调用HANDLER...CLOSE或线程中止时为止。
如果您使用一个别名打开表,则使用其它HANDLER语句进一步参阅表是必须使用此别名,而不能使用表名。
如果被指定的索引满足给定的值并且符合了WHERE条件,则第一个HANDLER...READ语法取出一行。
如果您有一个多列索引,则指定索引列值为一个用逗号隔开的清单。既可以为索引中的所有列指定值,
也可以为索引列的最左边的前缀指定值。假设一个索引包括三个列,名称为col_a, col_b,和col_c,并按此顺序排列。
HANDLER语句可以为索引中的所有三个列指定值,或者为一个最左边前缀中的各列指定值。举例说明:
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) ...
第二个HANDLER...READ语法按索引的顺序从表中取出一行。索引的顺序符合WHERE条件。
第三个HANDLER...READ语法按自然行的顺序从表中取出一行。自然行的顺序符合WHERE条件。
当想要对整个表进行扫描时,此语句比HANDLER tbl_name READ index_name更快。自然行的顺序指的是行存储在
MyISAM表数据文件的顺序。本语句也适用于InnoDB表,但是因为没有独立的数据文件,所以没有这类概念。
不使用LIMIT子句时,所有形式的HANDLER...READ语句均只取出一行。 如果要返回多个行,应加入一个LIMIT子句。本语句于
SELECT语句的语法一样。请参见13.2.7节,“SELECT语法”。
HANDLER...CLOSE用于关闭使用HANDLER...OPEN打开的表。
注释:要使用HANDLER接口来查阅一个表的PRIMARY KEY,应使用带引号的识别符`PRIMARY`:
HANDLER tbl_name READ `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接口观看数据更加自然。
添加table索引:
mysql> alter table info add index(age);
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看table索引:
mysql> show index from info;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| info | 1 | age | 1 | age | A | 5 | NULL | NULL | YES | BTREE | | |
| info | 1 | age_2 | 1 | age | A | 5 | NULL | NULL | YES | BTREE | | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)
create table info:
mysql> handler info read first;
+------+------+
| name | age |
+------+------+
| lisa | 27 |
+------+------+
1 row in set (0.00 sec)
mysql> handler info read next;
+------+------+
| name | age |
+------+------+
| tina | 25 |
+------+------+
1 row in set (0.00 sec)
mysql> handler info read age=(25);
+------+------+
| name | age |
+------+------+
| tina | 25 |
+------+------+
1 row in set (0.00 sec)
mysql> handler info read age=(25) limit 2;
+------+------+
| name | age |
+------+------+
| tina | 25 |
| do | 25 |
+------+------+
2 rows in set (0.00 sec)
mysql> handler info read age=(27) limit 3;
+-------+------+
| name | age |
+-------+------+
| lisa | 27 |
| ricky | 27 |
| lover | 27 |
+-------+------+
3 rows in set (0.00 sec)
mysql> handler info close;
Query OK, 0 rows affected (0.00 sec)
分享到:
相关推荐
### 如何使用MySQL:详细教程 ...以上是使用MySQL的基本方法和技术要点,通过这些操作,你可以有效地管理和操作数据库。无论是对于初学者还是有一定经验的开发人员来说,熟练掌握这些基本技能都是非常重要的。
在MySQL数据库系统中,存储过程是预编译的SQL语句集合,它们可以包含复杂的业务逻辑,提高数据操作的效率并降低网络流量。在编写存储过程时,我们常常需要处理可能出现的各种错误和异常,以确保程序的健壮性和可靠性...
MySQL作为最流行的开源数据库管理系统之一,其性能调优和运行状态监控是数据库管理员(DBA)日常工作中不可或缺的技能。本文档详细介绍了如何查询MySQL运行状态以及解释相关参数,从而帮助DBA更好地维护和优化MySQL...
MySQL存储过程中的ERROR Handler是用于异常处理的关键机制,它允许开发者在遇到错误时进行定制化的响应,而不是让整个过程崩溃。在存储过程中,错误处理通常涉及声明一个或多个HANDLER,这些HANDLER会在特定错误发生...
总结来说,这个压缩包文件提供了一个完整的Android应用开发练习案例,涵盖了Handler的使用、图文混排的实现以及服务器端的JSON、MySQL和JSP技术。对于初学者来说,这是一个很好的实践平台,能够帮助他们深入理解...
然而,MySQL目前不支持此操作。 异常处理的语法如下: ```sql DECLARE handler_type HANDLER FOR condition_value [,...] sp_statement ``` 其中,`handler_type`是处理方式,`condition_value`是异常类型,...
这个案例中的"mysql无限级别树形菜单操作"展示了如何利用存储过程来实现这一功能,特别是在一个新闻发布系统中,这样的数据结构非常常见,用于构建层次分明的新闻分类。 首先,我们要理解无限级别树形菜单的数据...
2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装...
对于InnoDB存储引擎,入口函数如 `ha_innobase::init_table_handle_for_HANDLER` 和 `ha_partition::init_table_handle_for_HANDLER()` 支持对分区表的HANDLER操作。 总的来说,MySQL的HANDLER命令是一个独特的功能...
首先,你需要从MySQL官网下载对应操作系统的MySQL Proxy二进制包,然后解压并进行安装。安装过程通常包括设置环境变量、创建数据目录以及启动服务。 配置MySQL Proxy主要涉及到两个文件:`proxy.lua`和`log.lua`。`...
handlersocket是基于mysql的nosql解决方案,与普通的...性能相比于mysql的批量操作方式,具有5倍左右的提升(我测试的,可能是内存设置的不多)。 详细内容见此链接 https://sourceforge.net/projects/erlanghandlerso/
2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装...
MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在...
在MySQL中,存储过程是一种预编译的SQL代码集合,它可以执行复杂的操作并提供更好的性能。在编写存储过程时,异常处理是确保程序稳定性和健壮性的重要环节。本实例展示了如何在MySQL存储过程中实现异常处理,以捕获...
2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装...
在MySQL中,异常处理通常通过DECLARE语句定义处理器,并结合HANDLER关键字来处理特定的错误情况。 1. **DECLARE声明与HANDLER**: DECLARE语句用于在存储程序(如存储过程或函数)中声明变量和处理器。HANDLER语句...
2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装...
2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上...