1。have  a try:
for example:
ALTER TABLE locations ADD (uid_col RAW(32));UPDATE locations SET uid_col = SYS_GUID();
SELECT location_id, uid_col FROM locations;
--------------------------------------
下面创建索引:
create index ind_uid as locations(uid_col);

解决方案 »

  1.   

    关于组合索引能否再详细些??(oracle9i中操作是否跟上面的一样)
      

  2.   

    sorry!
    错了下面创建索引:
    create index ind_uid on locations(uid_col); --不是as
      

  3.   

    关于建索引的语句,楼主自己去查书.
    关于使用索引.一旦索引建好了,你只要写语句就行了,就好象你建了两个字段的联合索引.你只要select * from table where id=3 and name='OK' 就行了,系统自己会去使用索引.当然如果根据你的需求,你可能不要用索引.比如id的索引,你就这么写 select * from tableb where id+0=3 这样系统就不会使用id上的索引了.如果表中有两个以上(包括两个)索引,其中有一个唯一性索引,而其他是非唯一性.
    在这种情况下,ORACLE将使用唯一性索引而完全忽略非唯一性索引.在ORACLE选择执行路径时,唯一性索引的等级高于非唯一性索引避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引 .对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中.如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引.
    比如你的联合索引.要想oracle数据库使用该索引,要引用建立索引的第一个列来作为条件:
    selecr * from oTable where p_number='111'   --优化器使用索引
    select * from oTable where optime ='222'    --优化器将不使用索引/以上是简单总结,有不对的地方或更好的讨论内容email: [email protected]