table t_image 
partition by hash(image_id)
(
 partition part_image_1 TABLESPACE fars_data1,
 partition part_image_2 TABLESPACE fars_data1
);select  rowid,image_id  from image PARTITION(part_image_1)   where image_id  in (8008451,8034871);
一般按理说都是rowid,但是这个语句默认排序怎么是:
rowid                         id
AAASDOAAJAAAACLAAA  8008451
AAASDOAAFAAAAEAAAA  8034871

解决方案 »

  1.   

    rowid代表了行在物理存储的位置.是有一个默认排序的.如果表数据没有删除,那么反映的就是行插入顺序.
      

  2.   

    oracle hash分区有自己的存储算法
      

  3.   

    排序从来不要指望数据库给你做,按自己意愿加order by。
      

  4.   

    但是展现的这个排序顺序,rowid大的,有时排到了前面
      

  5.   


    rowid由 数据库段(6)+数据文件号3+数据块号6+块行号3
    rowid 大小不表示数据顺序,而且你还是hash分区
      

  6.   

    这个决定了我怎么取值,如果不用order的话将会节省不少时间。
    哪位大侠明确赐教下小弟吧