天天看点

Oracle问题小记五:服务启动-索引-子查询-分页存储过程

1:服务启动问题

这个问题发生多次了,那个毛网管没事又让人改计算名称,oracle久没开了也没在意,oracle服务启动总失败,折腾后才发现,于是把计算机名称改回去,重启电脑,再启用服务,正常。

2:索引问题

Oracle问题小记五:服务启动-索引-子查询-分页存储过程

数据导到oracle后,发现一些简单的查询变的相当的慢如:

select id,username,title from blog_content where userid=111 order by id desc

后来经网页点拔,给title加上索引就快了:“select中的放在包含索引(oracle中称覆盖索引)”

后来其它查询慢的,全给加索引,速度才上去,看来搞oracle不搞索引,是没法玩的。

Oracle问题小记五:服务启动-索引-子查询-分页存储过程

3:子查询语句问题

正常代码:

select count(*) as usercount,

(select count(*)  from blog_content where typeid=0) as articlecount

from blog_user

此语句在access、mssql、sqlite、mysql下皆正常,唯独 oracle不成,加个函数解决如下:

min((select count(*)  from blog_content where typeid=0)) as articlecount

4:存储过程调用问题

问题:

存储过程的参数varchar2,如果代码中参数为空,会报异常:ora-01084: invalid argument in oci call view

如果在pl/sql中执行,而不会错。

解决方法是为空时,传递dbnull.value。

6:修改字段顺序

增加列,又不想放在最后面,拉不上去,只好写代码更改顺序号。

select object_id from all_objects where  object_name='blog_comment'--查表id

select col#,name from sys.col$ where obj#=49244--看一下字段顺序序号

update sys.col$ set col#=8 where obj#=49244 and name='createtime'--把序号更新了

7:更新序列初始值

数据库共用一个序列为自增id,导完数据后序列值没变,需要调整值。

alter sequence 序列名称 increment by 新的数字;

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2011/05/10/2042295.html