赛迪网 > IT技术 数据库 > SQL Server
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

使用全文索引根据表名查找SQL语句的功能

发布时间:2008.06.25 04:44     来源:赛迪网    作者:Anna

【赛迪网-IT技术报道】用全文索引做了一个根据表名查找SQL语句的功能. 在Statspack中有一个表存放了数据库中执行过的SQL, 虽然不是全部, 但也有差不多99.9%了. 只是由于它是分行存贮的, 不能直接用普通的SQL语句(like)来查找, 表名有可能被折分存放在两行中. 解决的方法有两种, 一是写过程, 将多行的串在一起. 二是用全文索引中的主从存贮方式, 建立全文索引来查询. 我选择的是全文索引的方式。

首先,将里面的数据拷出来, 分成两个表, 主表和从表:

CREATE TABLE SQLS AS

SELECT DISTINCT HASH_VALUE,'X' BODY FROM STATS$SQLTEXT;

ALTER TABLE SQLS ADD PRIMARY KEY (HASH_VALUE);

CREATE TABLE SQL_DETAILS AS

SELECT HASH_VALUE,PIECE,SQL_TEXT FROM STATS$SQLTEXT;

ALTER TABLE SQL_DETAILS ADD PRIMARY KEY (HASH_VALUE, PIECE);

创建全文索引的存贮方式及Lexer属性:

begin

ctx_ddl.create_preference('sqltext_pref', 'DETAIL_DATASTORE');

ctx_ddl.set_attribute('sqltext_pref', 'binary', 'true');

ctx_ddl.set_attribute('sqltext_pref', 'detail_table', 'sql_details');

ctx_ddl.set_attribute('sqltext_pref', 'detail_key', 'hash_value');

ctx_ddl.set_attribute('sqltext_pref', 'detail_lineno', 'piece');

ctx_ddl.set_attribute('sqltext_pref', 'detail_text', 'sql_text');

end;

/

begin

ctx_ddl.create_preference('sqltext_lex', 'BASIC_LEXER');

ctx_ddl.set_attribute ('sqltext_lex', 'continuation', '_');

ctx_ddl.set_attribute ('sqltext_lex', 'printjoins', '_');

ctx_ddl.set_attribute ('sqltext_lex', 'index_themes', 'NO');

ctx_ddl.set_attribute ('sqltext_lex', 'index_text', 'YES');

end;

/

接下来创建全文索引:

CREATE INDEX SQL_CTX on SQLS(body) indextype is ctxsys.context

parameters('datastore sqltext_pref LEXER sqltext_lex');

最后可以查询了:

SELECT HASH_VALUE FROM SQLS WHERE CONTAINS(BODY,'tablename and ...') > 0

(责任编辑:卢兆林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 执行全文索引时出现权限不足的解决方法 (06-22) · 执行全文索引时出现权限不足的解决方法 (06-22)
· 用SQL语句生成带有小计合计的数据集脚本 (06-10) · Oracle数据库SQL语句性能调整的基本原则 (05-06)
· Oracle中SQL语句执行效率的查找与解决 (05-05) · 教你快速掌握SQL语句各种写法的效率问题 (04-21)
· MySQL数据库中对前端和后台进行系统优化 (04-17) · 推荐:监控数据库性能的SQL语句汇总 (02-02)
· 在Linux环境用Python下开发全文索引 (12-15) · Oracle数据库全文索引设置步骤简介 (11-01)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统