请问oracle 9I 里面的clob字段为什么查询超慢 一个表中有一个clob字段,保存的文章内容,不到1万条数据,在mssql里面不用1秒钟,而在oracle里用plsql查询要几分钟,为什么会这么慢,请问怎么优化?数据库版本oracle 9I 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在网上搜到一个建议,说是,把这个字段设置下索引,查询的时候速度会快点,因为mysql里面的索引设置跟oracle不一样. 和你类似的问题,刚写完,已经有结果了,可以给你参考。http://blog.csdn.net/ehuman/archive/2008/05/14/2446535.aspx 追加了一篇CLOB的文章,肯定有你的答案:http://blog.csdn.net/ehuman/archive/2008/05/15/2449958.aspx Orale CLOB管理特点所致,MySQL对于大对象,处理方式和Oracle不同!MySQL应该在大对象储存的是指针,在Select阶段不进行数据加载。Oracle按照属性设置不同,在Select阶段加载数据,会使用【行内存储】和【行外存储】,对于【行内存储】,检索的时候非常快,对于【行外存储】,需要在每次产生一个I/O操作,当然慢了,出现这个问题,多数都是你表设计有缺陷。建议你更改设计模式,或是变相排除CLOB对于检索的影响。 谢谢你的回复,我对oracle不熟,很多地方都不知道如何操作,我贴一下表结构,请问具体应该怎么修改呢,谢谢表结构如下CREATE TABLE "SMARTWEB"."T_SMARTWEBINFO" ("INFOID" NUMBER(10) NOTNULL, "INFOTITLE" VARCHAR2(500 byte), "INFOCONTENT" CLOB, "CATEGORYID" NUMBER(10) DEFAULT 0, "CHANNELID" NUMBER(10), "DESCRIPTION" VARCHAR2(500 byte), "ADDTIME" DATE, "MODYFYTIME" DATE, "AUTHOR" VARCHAR2(50 byte), "SOURCE" VARCHAR2(50 byte), "KEYWORD" VARCHAR2(50 byte), "INFOHITS" NUMBER(10) DEFAULT 0, "INFOTOP" NUMBER(38) DEFAULT 0, "DISPLAY" NUMBER(2) DEFAULT 0, "URL" VARCHAR2(300 byte), "INFOFOCUS" NUMBER(2), "INFOIMAGE" VARCHAR2(300 byte), "PRODUCTPRICE" FLOAT(126) DEFAULT 0, "PRODUCTPROPERTY" VARCHAR2(500 byte) DEFAULT '', "INFOTEMPLATEID" NUMBER(10) DEFAULT 0, "BITURL" NUMBER(2) DEFAULT 0, "BITINFOIMAGE" NUMBER(2) DEFAULT 0, "INFOSORT" NUMBER(10) DEFAULT 0) TABLESPACE "SMT" PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) LOGGING LOB("INFOCONTENT") STORE AS ( TABLESPACE "SMT" STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1) ENABLE STORAGE IN ROW NOCACHE CHUNK 8192 PCTVERSION 10) 请教一个oracle学习的初级问题 变量的使用 【oracle】请教:translate('a&b','t{}','pp')输出结果 Oracle 批量delete和批量insert能否放入一个事务里? 求CNOUG论坛邀请码,不甚感激! ORACLE开始就让我们郁闷。。。 删除重复的数据,只保留一条 数据库连接的超时时间怎么设定? 关于查询数据的整合 not in 优化方法? Oracle左连接,右连接
已经有结果了,
可以给你参考。
http://blog.csdn.net/ehuman/archive/2008/05/14/2446535.aspx
肯定有你的答案:
http://blog.csdn.net/ehuman/archive/2008/05/15/2449958.aspx
MySQL对于大对象,处理方式和Oracle不同!
MySQL应该在大对象储存的是指针,在Select阶段不进行数据加载。
Oracle按照属性设置不同,在Select阶段加载数据,会使用【行内存储】和【行外存储】,
对于【行内存储】,检索的时候非常快,对于【行外存储】,需要在每次产生一个I/O操作,
当然慢了,出现这个问题,多数都是你表设计有缺陷。
建议你更改设计模式,或是变相排除CLOB对于检索的影响。
表结构如下CREATE TABLE "SMARTWEB"."T_SMARTWEBINFO" ("INFOID" NUMBER(10) NOT
NULL, "INFOTITLE" VARCHAR2(500 byte), "INFOCONTENT" CLOB, "CATEGORYID"
NUMBER(10) DEFAULT 0, "CHANNELID" NUMBER(10), "DESCRIPTION"
VARCHAR2(500 byte), "ADDTIME" DATE, "MODYFYTIME" DATE, "AUTHOR"
VARCHAR2(50 byte), "SOURCE" VARCHAR2(50 byte), "KEYWORD"
VARCHAR2(50 byte), "INFOHITS" NUMBER(10) DEFAULT 0, "INFOTOP"
NUMBER(38) DEFAULT 0, "DISPLAY" NUMBER(2) DEFAULT 0, "URL"
VARCHAR2(300 byte), "INFOFOCUS" NUMBER(2), "INFOIMAGE"
VARCHAR2(300 byte), "PRODUCTPRICE" FLOAT(126) DEFAULT 0, "PRODUCTPROPERTY"
VARCHAR2(500 byte) DEFAULT '', "INFOTEMPLATEID" NUMBER(10)
DEFAULT 0, "BITURL" NUMBER(2) DEFAULT 0, "BITINFOIMAGE"
NUMBER(2) DEFAULT 0, "INFOSORT" NUMBER(10) DEFAULT 0)
TABLESPACE "SMT" PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS
255
STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS
2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)
LOGGING LOB("INFOCONTENT") STORE AS ( TABLESPACE "SMT"
STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS
2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)
ENABLE
STORAGE IN ROW
NOCACHE CHUNK 8192 PCTVERSION 10)