一个表中有一个clob字段,保存的文章内容,不到1万条数据,在mssql里面不用1秒钟,而在oracle里用plsql查询要几分钟,为什么会这么慢,请问怎么优化?数据库版本oracle 9I

解决方案 »

  1.   

    在网上搜到一个建议,说是,把这个字段设置下索引,查询的时候速度会快点,因为mysql里面的索引设置跟oracle不一样.
      

  2.   

    和你类似的问题,刚写完,
    已经有结果了,
    可以给你参考。
    http://blog.csdn.net/ehuman/archive/2008/05/14/2446535.aspx
      

  3.   

    追加了一篇CLOB的文章,
    肯定有你的答案:
    http://blog.csdn.net/ehuman/archive/2008/05/15/2449958.aspx
      

  4.   

    Orale CLOB管理特点所致,
    MySQL对于大对象,处理方式和Oracle不同!
    MySQL应该在大对象储存的是指针,在Select阶段不进行数据加载。
    Oracle按照属性设置不同,在Select阶段加载数据,会使用【行内存储】和【行外存储】,
    对于【行内存储】,检索的时候非常快,对于【行外存储】,需要在每次产生一个I/O操作,
    当然慢了,出现这个问题,多数都是你表设计有缺陷
    建议你更改设计模式,或是变相排除CLOB对于检索的影响。
      

  5.   

    谢谢你的回复,我对oracle不熟,很多地方都不知道如何操作,我贴一下表结构,请问具体应该怎么修改呢,谢谢
    表结构如下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)