10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 从本手册中摘录

13.2.4处理程序声明

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

处理程序语句提供直接访问表存储引擎接口。它可供选择InnoDBmyisam.表。

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

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

首先处理程序...阅读语法获取一行,其中指定的索引满足给定值和在哪里条件是满足的。如果有多列索引,请将索引列值指定为逗号分隔列表。指定索引中所有列的值,或指定索引列的最左边的前缀的值。假设一个索引my_idx包括命名的三列可乐COL_B.,COL_C.,按这个顺序。这处理程序语句可以为索引中的所有三列指定值,也可以为最左边前缀中的列指定值。例如:

处理程序...阅读my_idx= (col_a_val,col_b_val,col_c_val) ... HANDLER ... READ my_idx = (col_a_val,col_b_val) ... HANDLER ... READ my_idx = (col_a_val) ...

雇佣的处理程序接口引用表的首要的关键,使用引用的标识符“主”

处理程序tbl_name读“初级”……

第二个处理程序...阅读语法从匹配的索引顺序中从表中获取行在哪里状况。

第三处理程序...阅读语法从匹配的自然行顺序中从表中获取行在哪里状况。它比处理程序tbl_nameindex_name需要进行全表扫描时。自然行顺序是行存储在myisam.表数据文件。此声明适用于InnoDB表同样,但没有这样的概念,因为没有单独的数据文件。

没有限制条款,所有形式的处理程序...阅读如果有一个可用,请获取单行。要返回特定数量的行,包括一个限制条款。它具有与此相同的语法选择陈述。看第13.2.10节“选择声明”

处理程序...关闭关闭一个打开的表处理程序......开放

有几个原因使用处理程序接口而非正常选择陈述:

  • 处理程序是速度比选择

    • 为此分配指定的存储引擎处理程序对象处理程序......开放。该对象被重用以便随后处理程序表的语句;它不需要为每一个重新初始化。

    • 其中涉及的解析较少。

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

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

  • 处理程序使PORT到MySQL应用程序更容易使用低级例如接口。(见第15.20节,“InnoDB memcached Plugin”出于适应使用键值存储范例的应用程序的替代方法。)

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

处理程序是一个有点低级别的陈述。例如,它不提供一致性。那是,处理程序......开放不是获取表的快照,然后这样做不是锁表。这意味着之后处理程序......开放发出语句,可以修改表数据(由当前会话或其他会话),并且这些修改可能仅是部分可见的处理程序......下一个处理程序......上一个扫描。

可以关闭并标记开放处理程序,以便重新开放,在这种情况下,处理程序在表格中失去其位置。当以下两种情况都是真的时,发生这种情况:

  • 任何会话都在执行冲洗表或者在处理程序表上的DDL语句。

  • 在其中的处理程序是打开执行非处理程序使用表格的陈述。

截断表对于一个表关闭了与打开的表的所有处理程序处理程序开放

如果桌子被刷新冲洗表tbl_name读锁定被打开了处理程序,处理程序被隐式冲洗并失去其位置。