数据库有一个表,目前大概有100万条记录,目前项目还处于开发阶段,数据库没有做任何优化,所以执行一条
select * from .. order by .. 都要7-8秒,看Oracle的企业管理器,提示在这个表上的查询会导致大量的用户I/O等待,请问有哪些方法可以提高查询的性能?我刚刚接触Oracle开发,完全是菜鸟,还望各位大哥不吝赐教。多谢!
select * from .. order by .. 都要7-8秒,看Oracle的企业管理器,提示在这个表上的查询会导致大量的用户I/O等待,请问有哪些方法可以提高查询的性能?我刚刚接触Oracle开发,完全是菜鸟,还望各位大哥不吝赐教。多谢!
良好的索引
对大量数据避免不必要的order by
dbms_job包
可以根据数据业务类型分簇,和数据新旧没有关系
不过对oracle而言,百万数据实在不多,一般建索引就够了还有,检索数据其实不满,但显示出来就很慢了,你不会直接看100万条数据吧
我也是个oracle菜鸟,我提几点个人意见:
1、select * from .. order by .. 在实际的项目应用中非常忌讳 select * , count(*) 这种写法,不要偷懒,必须要把所有需要查询出来的字段都列出来,比如: select t.id,t.name......
2、而且最好多起“别名” 比如: select ...from emp e where... 常用的字段也要起 “别名”因为,数据库会把“别名”保存到内存,就不会每次都要访问表了
3、对关键字段建立索引,就是绝大部分数据的这个字段都是不一样的,如果给一个重复率很高的字段建立了索引就会事倍功半,所以建立索引很关键,最好请教你身边oracle高手,建立正确的索引。
返回结果很多的话用order by 肯定很慢。
你最好把数据结构和sql语句贴出来,这样大家就可以给你一个满意的答复了。
使用并行进行查询。
平时使用包定时对重复记录进行删除。
建立合理的数据库分区结构。
使用表的别名进行查询。
少用order by语句。