我們公司數據庫(Oracle9i)資料量越來越龐大,以前執行很快的SQL語句,現在變得很慢,檢查發現,原來數據庫自動執行最優化索引的語句,現在變成全表掃描,請問是否做一次索引rebuild及table的analyze就可以改善了呢,我問過以前的DBA,他們說不能做analyze,做完以後程序中以往正常執行的sql語句效能會變差。我現在開發程序要用的sql語句現在都執行不出結果,不知該怎麽辦,請教各位大蝦給出寶貴意見。

解决方案 »

  1.   

    楼主,你是这个问题,跟我月初一直在处理客户7月份结算的时候一样!
    客户7月份的结算,整了半个月才给搞定!就是批次太慢了,一条数据就要40多分钟!
    跟你一样,也是表数据太大,查看执行计划走的是全表扫描,可是表上有index的,原来都是走的index,我查看也是发现有表的统计信息:select * from user_tables where user_table=upper('表') and num_rows is not null;用提示hints强制查询走index也不行,还是全表扫描最后,我的处理是:把表给drop了,再重新创建该表,然后跑批次的时候就走的index了估计是表有原来的统计信息,将统计信息删除了,也许就没事了
    analyze table table_name delete STATISTICS;
      

  2.   

    要么索引失效,要么统计信息过旧,2L的做法LZ你可以借鉴一下,至于说表不能 analyze ,这个还真是奇怪,难道说以前应用写的sql有问题?hint加错了?