我数据库(unix+oracle8.1.5)中有一个表A,它有30个字段,所有字段的长度和为328字节,当我用SQL查询时不管如何优化取一条记录的时间最少都要0.38秒。我的SQL是select hbs_bh from yhzl where hbs_bh='7101000123',其中hbs_bh字段是主关键字,我想跟SQL肯定无关,因为这已经是最快的SQL了,后来我想可能是记录集太多的原因,我就把表复制了一个,将记录全部删除了,但还是一样,所以我想应该和字段个数有关,于是删除了一个字段后,取一条记录的时间就正常了,大约0.01秒,而且不管删除哪个字段都会正常。应该是字段的原因,于是我新建了一个表,字段名和这个表一样,只是所有的字段都改为了CHAR(1)类型,但还是一样慢,所以我总结出应该是字段个数的原因,与字段的类型无关,但是我将这个表放在另外一台机器的数据库(windows2000+oracle8.1.6)中,执行查询却一切正常,我现在还没找到解决方案,不知道是数据库初始化参数的设置问题,还是操作系统的原因,我想一定是和字段个数有关,希望各位能给于提示!

解决方案 »

  1.   

    这个和字段数没有关系,如果字段为主关键字但是不是索引的话,速度是同样的,如果查询字段中存在索引字段,则查询时的PLAN自动采用索引,速度会在0.01秒级
      

  2.   

    应该也不是字段个数的原因,我在ORACLE73,有50个字段也没有出现这个原因,
    你先不用这个字段做关键字段试下。
      

  3.   

    谢谢各位的关注与回答!
    我试过了多种情况,我想肯定和字段数有关系,因为后来我新建了一个表,里面是没有一条记录,字段数为30个时速度就变为0.4秒,如果字段数为29个时速度就变为0.01秒。正常的ORACLE应该是没有此问题的,因为我后来装的ORACLE8.1.6+WIN2K用同样的表都正常,所以我想应该是系统的原因或者是数据库启动参数的原因,系统的原因可能有ORACLE8.1.5+SCO UNIX7.11没打补丁或者ORACLE及UNIX没有配好,但是这方面的技术小弟又知知甚少,希望各位能给于相应的提示。