SELECT NAME FROM T
AND ky_1 <= TO_DATE('20081031','YYYY-MM-DD')
AND ky_2 <> TO_DATE('99991231','YYYY-MM-DD')
AND ky_3 >= TO_DATE('20081106','YYYY-MM-DD')
这3个条件同时出现后,检索速度奇慢这是什麽原因?应该如何处理?

解决方案 »

  1.   


    --少了where:SELECT NAME
      FROM T where ky_1 <= TO_DATE('20081031', 'YYYY-MM-DD') AND
           ky_2 <> TO_DATE('99991231', 'YYYY-MM-DD') AND
           ky_3 >= TO_DATE('20081106', 'YYYY-MM-DD');
      

  2.   

     ky_1, ky_2, ky_3三个字段建索引。
    create index in_123  on t(ky_1, ky_2, ky_3)
      

  3.   

    建组合索引create index idx_t_2dt on t(ky_1, ky_3);
      

  4.   

    ky_2可以不要,也可以加到后面试试create index idx_t_2dt on t(ky_1, ky_3, ky_2); 
      

  5.   

    检索条件排列一下,试下2,1,3或2,3,1那些可以过滤掉最大数量记录的条件最好写在WHERE子句的末尾
      

  6.   

    有<>了
    速度不会太快吧