本公司有一个oracle 10G的数据库,里面有一张表存放了上千万条数据,现在对这张表进行查询"select no,lj,ds from tab1 where xm='hzx'",起码要20-60秒才能返回记录,请问有什么方法可以提高查询速度?tab1 的结构是这样的
no  integer;
xm  char(20);
lj  char(10);
ds  char(50);请问使用索引能大大提供速度么,该如何建索引,索引又如何使用的?

解决方案 »

  1.   

    create index on tab1(xm)
      

  2.   

    create index inde_xm on tab1(xm)
      

  3.   

    你这个简单,只是个=运算,用索引应该是不到1秒的事create index idx_tab1_xm on tab1(xm);然后要分析dbms_stats.gather_table_stats(user, 'tab1', cascade=>true);
      

  4.   

    那么请问在delphi编译的程序中如何使用自己建立的索引?如果改变where的条件,例如改为 where no=101,是不是要重新再建立另外一个索引?
      

  5.   


    一般不需要显示声明使用索引,数据库会自已使用,oracle很聪明的.如果你用where no=101,那在no也要建一个.不过建立索引是个很复杂的问题,如果你的业务逻辑很复杂,where条件有很多种,就要全方面考虑.