中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL中如何使用handler

發布時間:2021-10-27 17:33:51 來源:億速云 閱讀:307 作者:小新 欄目:MySQL數據庫

小編給大家分享一下MYSQL中如何使用handler,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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語句提供通往表存儲引擎接口的直接通道。HANDLER可以用于MyISAM和InnoDB表。

[@more@]

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接口觀看數據更加自然。

示例:

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”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌什县| 长岛县| 东山县| 如东县| 海门市| 威宁| 荆门市| 东莞市| 东山县| 平阴县| 格尔木市| 桃源县| 会泽县| 牙克石市| 罗田县| 双城市| 汉源县| 府谷县| 涿州市| 新昌县| 郸城县| 黄石市| 安化县| 桐乡市| 育儿| 石家庄市| 巴塘县| 谷城县| 洪泽县| 黄平县| 明水县| 乃东县| 如皋市| 庄浪县| 清流县| 安吉县| 重庆市| 阳江市| 依安县| 衡阳县| 临夏县|