免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3488 | 回复: 10
打印 上一主题 下一主题

[请教] 一个sql的问题,(稍微有点眉目了,有跟进的吗) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-15 12:40 |只看该作者 |倒序浏览
大家谁用过


  1. HEADLER OPEN TABLE_NAME
  2.    HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...)[ WHERE where_condition ] [LIMIT ... ]
  3.    HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE where_condition ] [LIMIT ... ]
  4.    HEADLER  TABLE_NAME  READ { FIRST | NEXT }  [ WHERE where_condition ] [LIMIT ... ]
  5. HEADLER CLOSE TABLE_NAME
复制代码


我看半天,感觉很迷茫]

假设: 有一表 table  字段  id(key) name address tel email   索引  n_add(包含字段 name,address )

想问的问题是:  1. 这个语句的具体是什么意思,最好是实例说明(手册中的例子看不大明白)
              2. 这个语句可以达到一个select的效果吗?
                              就是说:select * from table where id>500 limit 10 所得到的结果,用上面的那个HEADLER语句可以实现吗?
                     3. 如果指定的索引顺序和mysql执行时候选择的索引顺序不一样,会出现什么状况?是不是必须指定和mysql执行的索引
                 顺序一样的顺序?


请各位高手帮忙!!!!!!!!!!!!!!!!!!!!!!!!

[ 本帖最后由 R_Edge 于 2007-8-15 17:29 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-08-15 13:00 |只看该作者
没人帮忙,自己先顶

论坛徽章:
0
3 [报告]
发表于 2007-08-15 13:20 |只看该作者
在线等啊,老大们!

都去吃饭了吗?

论坛徽章:
0
4 [报告]
发表于 2007-08-15 14:38 |只看该作者
还没吃完饭啊?

没人顶,我自己顶,直到有答案了!!!!!!!!!!!!!1

论坛徽章:
0
5 [报告]
发表于 2007-08-15 15:34 |只看该作者
还没人回答?我顶啊顶啊顶啊顶

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
6 [报告]
发表于 2007-08-15 16:13 |只看该作者
6.4.2 HANDLER 句法
HANDLER tbl_name OPEN [ AS alias ]
HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...)
    [ WHERE ... ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE ... ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE ... ] [LIMIT ... ]
HANDLER tbl_name CLOSE

HANDLER 語句提供了直接存取 MyISAM 表儲存引擎的接口。

HANDLER 語句的第一個形式打開一個表,通過後來的 HANDLER ... READ 語句使它可讀取。這個表物件將不能被其它線程共享,也不會被關閉,除非線程調用 HANDLER tbl_name CLOSE 或線程關閉。

第二個形式讀取指定的索引遵從那個條件並且適合 WHERE 條件的一行(或更多的,由 LIMIT 幾句指定)。如果索引由幾個部分組成(範圍有幾個列),值以逗號分隔的清單指定﹔如果只提供的一部分值,那麼第一個列是必需的。

第三個形式從表中以索引的順序讀取相符 WHERE 條件的一行(或更多的,由 LIMIT 幾句指定)。

第四個形式(沒有索引清單)從表中以自然的列順序(在資料文件中儲存的次序)讀取相符 WHERE 條件的一行(或更多的,由 LIMIT 幾句指定)。如果期望做一個全表掃描,它將比 HANDLER tbl_name READ index_name 更快。

HANDLER ... CLOSE 關閉一個以 HANDLER ... OPEN 打開的表。

HANDLER 是一個稍微低級的語句。舉例來說,它不提供一致性約束。更確切地說,HANDLER ... OPEN 不 接受一個表的快照,並且 不 鎖定表。這就意味著在一個 HANDLER ... OPEN 被執行後,表資料仍會被 (這個或其它的線程) 修改,這些修改可能在 HANDLER ... NEXT 和 HANDLER ... PREV 掃描中才會部分地出現。

使用這個接口代替普通 SQL 的原因是:

它比 SELECT 快,因為:
在 HANDLER OPEN 中,一個指定的儲存引擎被分配給目前線程。
較少的復雜解析。
沒有最佳化器和沒有查詢檢查開銷。
在兩個處理請求之間不需要鎖定使用的表。
接口處理機並不提供一個一致性的查看資料 (舉例來說,讀污染 dirty-reads 是允許的),因而,儲存引擎可以做 SQL 通常不允許的最佳化。
它使得更加容易地移植一個使用對 MySQL 的 ISAM 類似接口的應用程式。
它允許你在一個以 SQL 不容易完成(在某些不可能的完全)的情況下遍歷一個資料庫。當使用提供了一個交談式的使用者接口存取資料庫的應用程式時,接口處理機是更加自然的查看資料的方式。

论坛徽章:
0
7 [报告]
发表于 2007-08-15 16:17 |只看该作者
大哥.这个我也看了,就是有点看不大明白,你能帮我写个具体的实例,这样看的清楚

还有就是,这个语句一般是用在什么地方?存储过程吗????

我实在是看不出他有什么用,能帮忙说说吗?

还有,斑竹,我的问题,你一个也没帮我解答啊

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
8 [报告]
发表于 2007-08-15 16:39 |只看该作者
mysql_query('HANDLER SurveyInfo OPEN;');
mysql_query('HANDLER SurveyInfo READ Name = ( 11 ) WHERE ID >5 AND ID <100 LIMIT 1 ;');
这里进行信息的读取;
然后启动的NEXT这些可以读取上下信息
mysql_query('HANDLER SurveyInfo Close;');

论坛徽章:
0
9 [报告]
发表于 2007-08-15 17:17 |只看该作者
谢谢斑竹!

论坛徽章:
0
10 [报告]
发表于 2007-08-16 11:36 |只看该作者
为什么要用HANDLER ?什么情况下用它好呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP