有三条sql语句:select rownum rnum,t.* from duty_users t
select rnum,user_code from (select rownum rnum,t.* from duty_users t)
select rnum,user_code,user_name from (select rownum rnum,t.* from duty_users t)
结果分别是
//-- select rownum rnum,t.* from duty_users t ---//
RNUM USER_CODE USER_NAME USER_GENDER
1 fan 范 1
2 d dd 1
3 zhangsan zhangsan 1
4 admin 管理员 1//--- select rnum,user_code from (select rownum rnum,t.* from duty_users t) --//
RNUM USER_CODE
1 admin
2 d
3 fan
4 zhangsan //-- select rnum,user_code,user_name from (select rownum rnum,t.* from duty_users t) ---//
RNUM USER_CODE USER_NAME
1 fan 范
2 d dd
3 zhangsan zhangsan
4 admin 管理员
发现第二条语句查询的结果与其他语句查询的结果顺序不一致,好像第二条语句按照user_code排序了,不知道为什么?
select rnum,user_code from (select rownum rnum,t.* from duty_users t)
select rnum,user_code,user_name from (select rownum rnum,t.* from duty_users t)
结果分别是
//-- select rownum rnum,t.* from duty_users t ---//
RNUM USER_CODE USER_NAME USER_GENDER
1 fan 范 1
2 d dd 1
3 zhangsan zhangsan 1
4 admin 管理员 1//--- select rnum,user_code from (select rownum rnum,t.* from duty_users t) --//
RNUM USER_CODE
1 admin
2 d
3 fan
4 zhangsan //-- select rnum,user_code,user_name from (select rownum rnum,t.* from duty_users t) ---//
RNUM USER_CODE USER_NAME
1 fan 范
2 d dd
3 zhangsan zhangsan
4 admin 管理员
发现第二条语句查询的结果与其他语句查询的结果顺序不一致,好像第二条语句按照user_code排序了,不知道为什么?
如果读取索引的代价更小时,将直接读取索引中的user_code,
而不会从表中读取
可是lz的语句每次都是选择的所有的列。应该外层user_code早已经从表中取出来了,不存在走不走索引了吧
By default, Oracle Database sorts indexes in ascending order when it creates the index.
这样修改下
------上面的写错了,要使用别名。