SQL语言中的升序,降序,是怎么会事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语言中的升序,降序,是怎么会事相关的知识,希望对你有一定的参考价值。
升序和降序就是指按照什么来排序举个例子
表 aaa
id name
1 aa
2 bb
3 cc
select * from aaa order by id asc
这样就是升序 取出的结果为
1 aa
2 bb
3 cc
select * from aaa order by id desc
这样就是降序 取出的结果为
3 cc
2 bb
1 aa 参考技术A order by xx asc 升序
order by xx desc 降序
讲的是返回数据的排序方式,以xx的大小排序,比如xx为时间,那么升序就是从最以前的时候到最近的时候排列数据,相反降序就是从最新的时间到最老的时间排列! 参考技术B 比如输入滴a b c是字母
所以根据ASCII大小来排序
a的ASCII貌似是97
b的ASCII貌似是98
c的ASCII貌似是99~
所以升序按照由小到大
降序反之哈~
也就是说字母排顺序是转化为ASCII排序~
数字就是直接排~
中文则根据拼音~而拼音其实本质就是字母哈~HOHO~ 参考技术C 降序
select
*
from
kc
order
by
cpbh
desc
升序
select
*
from
kc
order
by
cpbh
asc
疑问? Oracle普通的B树索引是升序还是降序?
疑问? Oracle普通的B树索引是升序还是降序?
一、测试创建对象
SQL> create table a as select * from dba_objects; Table created. SQL> create index a_id on a(object_id); Index created. SQL> set autotrace on
二、测试索引,观察执行计划
SQL> select object_name from a where object_id in(7788,7799) order by object_id desc; OBJECT_NAME -------------------------------------------------------------------------------------------------------------------------------- V$DIAG_DDE_USR_INC_ACT_MAP V_$DIAG_DDE_USER_ACTION_DEF Execution Plan ---------------------------------------------------------- Plan hash value: 2600461980 -------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 1106 | 9 (0)| 00:00:01 | | 1 | INLIST ITERATOR | | | | | | | 2 | TABLE ACCESS BY INDEX ROWID | A | 14 | 1106 | 9 (0)| 00:00:01 | |* 3 | INDEX RANGE SCAN DESCENDING| A_ID | 299 | | 3 (0)| 00:00:01 | -------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("OBJECT_ID"=7788 OR "OBJECT_ID"=7799) Note ----- - dynamic sampling used for this statement (level=2) SQL> select object_name from a where object_id in(7788,7799) order by object_id asc; OBJECT_NAME -------------------------------------------------------------------------------------------------------------------------------- V_$DIAG_DDE_USER_ACTION_DEF V$DIAG_DDE_USR_INC_ACT_MAP Execution Plan ---------------------------------------------------------- Plan hash value: 2908601139 ------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 1106 | 9 (0)| 00:00:01 | | 1 | INLIST ITERATOR | | | | | | | 2 | TABLE ACCESS BY INDEX ROWID| A | 14 | 1106 | 9 (0)| 00:00:01 | |* 3 | INDEX RANGE SCAN | A_ID | 299 | | 3 (0)| 00:00:01 | ------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("OBJECT_ID"=7788 OR "OBJECT_ID"=7799) Note ----- - dynamic sampling used for this statement (level=2)
可以发现,使用ASC时,执行计划无改变
使用DESC 时,执行计划存在
INDEX RANGE SCAN DESCENDING 索引范围降序扫描,因此本次实验证明,当默认排序方式创建索引时,索引数据使用升序排列。
那么问题来了,知道这个东西有啥用呢?
创建复合索引,并且业务SQL存在order by 的方式时!!!注意理解,或者SQL order by desc/asc 则创建复合索引列跟着 desc/asc也没毛病。
以上是关于SQL语言中的升序,降序,是怎么会事的主要内容,如果未能解决你的问题,请参考以下文章