久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MYSQL中如何使用handler

154次閱讀
沒有評論

共計 4668 個字符,預計需要花費 12 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 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 語句用于打開一個表,通過后續(xù)的 HANDLER…READ 語句建立讀取表的通道。

本表目標不會被其它線程共享,也不會關閉,直到線程調(diào)用 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 表數(shù)據(jù)文件的順序。本語句也適用于 InnoDB 表,但是因為沒有獨立的數(shù)據(jù)文件,所以沒有這類概念。

不使用 LIMIT 子句時,所有形式的 HANDLER…READ 語句均只取出一行。如果要返回多個行,應加入一個 LIMIT 子句。本語句于

SELECT 語句的語法一樣。請參見 13.2.7 節(jié),“SELECT 語法”。

HANDLER…CLOSE 用于關閉使用 HANDLER…OPEN 打開的表。

注釋:要使用 HANDLER 接口來查閱一個表的 PRIMARY KEY,應使用帶引號的識別符 `PRIMARY`:

HANDLER tbl_name READ `PRIMARY`   (...);

HANDLER 是比較低級別的語句。例如,它不能提供一致性。也就是說,HANDLER…OPEN 不能為表做快照,也不能鎖定表。這意味著,

當一個 HANDLER…OPEN 語句被編寫后,表數(shù)據(jù)可以被更改(用此線程或用其它線程),并且這些更改只會部分地出現(xiàn)在 HANDLER…NEXT 或 HANDLER…PREV 掃描中。

使用 HANDLER 接口代替常規(guī)的 SELECT 語句有多個原因:

·         HANDLER 比 SELECT 更快:

o         一個指定的存儲引擎管理程序目標為了 HANDLER…OPEN 進行整序。該目標被重新用于該表的后續(xù)的 HANDLER 語句;不需要對每個語句進行重新初始化。

o         涉及的分析較少。

o         沒有優(yōu)化程序或查詢校驗開銷。

o         在兩個管理程序請求之間,不需要鎖定表。

o         管理程序接口不需要提供外觀一致的數(shù)據(jù)(例如,允許無條理的讀?。?,所以存儲引擎可以使用優(yōu)化,而 SELECT 通常不允許使用優(yōu)化。

·         有些應用程序使用與 ISAM 近似的接口與 MySQL 連接。使用 HANDLER 可以更容易地與這些應用程序連接。

·         HANDLER 允許您采用一種特殊的方式進出數(shù)據(jù)庫。而使用 SELECT 時難以采用(或不可能采用)這種方式。有些應用程序可以提供一個交

互式的用戶接口與數(shù)據(jù)庫連接。當與這些應用程序同時使用時,用 HANDLER 接口觀看數(shù)據(jù)更加自然。

示例:

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

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-07-27發(fā)表,共計4668字。
轉(zhuǎn)載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 汉沽区| 大城县| 荔波县| 灵武市| 来宾市| 吉木乃县| 兴宁市| 柯坪县| 霍邱县| 水富县| 延吉市| 孝感市| 枝江市| 南靖县| 天祝| 五家渠市| 田林县| 宁强县| 柳林县| 湘西| 岳阳县| 太保市| 弥渡县| 桂阳县| 平阴县| 时尚| 大兴区| 南充市| 新晃| 资源县| 龙门县| 万载县| 固阳县| 和林格尔县| 梓潼县| 阆中市| 新民市| 砚山县| 句容市| 衡水市| 定西市|