10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 235.6 kb
手册页(Zip)- 347.2 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

13.2.4 HANDLER语句

处理程序tbl_name打开[[as]别名)处理程序tbl_nameindex_name{= | <= | >= | < | >} (value1value2,…where_condition[限制……)处理程序tbl_nameindex_name{first | next | prev | last} [wherewhere_condition[限制……)处理程序tbl_name读取{first | next} [wherewhere_condition[限制……)处理程序tbl_name关闭

处理程序语句提供对表存储引擎接口的直接访问。它可用于InnoDB而且MyISAM表。

处理程序……开放语句打开一个表,使其可以使用后续访问处理程序……读语句。此表对象不被其他会话共享,并且在会话调用之前不会关闭处理程序……关闭或者会话终止。

如果使用别名打开表,则进一步使用other引用打开表处理程序语句必须使用别名而不是表名。如果不使用别名,而是使用由数据库名限定的表名打开表,则进一步引用必须使用限定的表名。例如,对于使用mydb.mytable,进一步的引用必须使用mytable

第一个处理程序……读语法获取一行,其中指定的索引满足给定值在哪里条件满足。如果您有一个多列索引,请将索引列值指定为逗号分隔的列表。要么为索引中的所有列指定值,要么为索引列的最左边的前缀指定值。假设一个索引my_idx包括三个列col_acol_b,col_c,按照这个顺序。的处理程序语句可以为索引中的所有三列指定值,也可以为最左边前缀中的列指定值。例如:

处理程序……读my_idx = (col_a_val col_b_val col_c_val)……处理程序……读取my_idx = (col_a_val,col_b_val)…处理程序……读取my_idx = (col_a_val)…

雇用处理程序接口来引用表的主键,使用带引号的标识符“主”

处理程序tbl_name阅读“primary”…

第二个处理程序……读属性的索引顺序从表中获取与之匹配的行在哪里条件。

第三个处理程序……读属性的自然行顺序从表中获取与之匹配的行在哪里条件。它比处理程序tbl_nameindex_name当需要全表扫描时。自然行顺序是数据中存储行的顺序MyISAM表数据文件。这句话适用于InnoDB表,但是没有这样的概念,因为没有单独的数据文件。

没有一个限制从句,各种形式的处理程序……读获取单行(如果有)。若要返回特定的行数,请包含限制条款。的语法相同选择声明。看到第13.2.9节“SELECT语句”

处理程序……关闭关闭已打开的表处理程序……开放

有几个理由使用处理程序接口而不是正常接口选择声明:

  • 处理程序选择

    • 对象分配了指定的存储引擎处理程序对象处理程序……开放.该对象用于后续的重用处理程序该表的语句;它不需要为每个对象重新初始化。

    • 涉及的解析较少。

    • 没有优化器或查询检查开销。

    • 处理程序接口不必提供数据的一致外观(例如,脏读是允许的),所以存储引擎可以使用优化选择通常不允许。

  • 处理程序使它更容易移植到使用底层的MySQL应用程序ISAM例如接口。(见章节14.21,“InnoDB memcached Plugin”用于调整使用键值存储范例的应用程序的另一种方法。)

  • 处理程序使您能够以一种难以(甚至不可能)完成的方式遍历数据库选择.的处理程序接口是在使用为数据库提供交互式用户界面的应用程序时查看数据的一种更自然的方式。

处理程序是一个低级的语句。例如,它不提供一致性。也就是说,处理程序……开放获取表的快照,并执行锁住桌子。这意味着在a之后处理程序……开放语句发出时,表数据可以被修改(通过当前会话或其他会话),这些修改可能只是部分可见处理程序……下一个处理程序……上一页扫描。

打开的处理程序可以关闭并标记为重新打开,在这种情况下,处理程序将失去其在表中的位置。当以下两种情况都成立时,就会发生这种情况:

  • 任何会话执行刷新表或DDL语句。

  • 打开处理程序的会话执行非处理程序使用表的语句。

截断表对于一个表,关闭用于打开该表的所有处理程序处理程序打开

如果一个表被刷新刷新表tbl_name带读锁是用处理程序,处理程序将隐式刷新并丢失其位置。