heap表按字符串和数值型排序规则
SQL> create user scan identified by scan default tablespace users; User created. SQL> grant dba to scan; Grant succeeded. create table t1 (id char(10) primary key,a1 char(10),a2 char(10)); begin
for i in 1 .. 25
loop
insert into t1 values(i,i,'a'||i);
end loop
;
commit;
end; BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCAN',
tabname => 'T1',
estimate_percent => 100,
method_opt => 'for all columns size repeat',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
/ create table t2 (id int primary key,a1 char(10),a2 char(10))organization index; begin
for i in 1 .. 25
loop
insert into t2 values(i,i,'a'||i);
end loop
;
commit;
end; BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCAN',
tabname => 'T2',
estimate_percent => 100,
method_opt => 'for all columns size repeat',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
/ 先分别dump下t1和t2表: t1 heap t2 iot SQL> select TABLE_NAME,TABLESPACE_NAME,CLUSTER_NAME, IOT_NAME from user_tables; TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------------
T1 USERS
T2 SQL> select object_name,object_id from user_objects; OBJECT_NAME OBJECT_ID
------------------------------ ----------
SYS_C00147516 260450
T2 260451
T1 260449
SYS_IOT_TOP_260451 260452 SQL> select index_name,INDEX_TYPE,TABLE_OWNER,TABLE_NAME,table_type from user_indexes; INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME TABLE_TYPE
------------------------------ --------------------------- ------------------------------ ------------------------------ -----------
SYS_C00147516 NORMAL SCAN T1 TABLE
SYS_IOT_TOP_260451 IOT - TOP SCAN T2 TABLE 2.将索引dump到trace文件中
SQL> select value from v$diag_info where name='Default Trace File'; VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/ncdb/podinndb/trace/podinndb_ora_28524.trc SQL> alter session set events 'immediate trace name treedump level 260450'; 会话已更改。 ----- begin tree dump
leaf: 0x100008b 16777355 (0: nrow: 25 rrow: 25)
----- end tree dump SQL> select index_name, PREFIX_LENGTH, BLEVEL, LEAF_BLOCKS from user_indexes where index_name='SYS_C00147516'; INDEX_NAME PREFIX_LENGTH BLEVEL LEAF_BLOCKS
------------------------------ ------------- ---------- -----------
SYS_C00147516 0 1 SQL> select dbms_utility.data_block_address_file('16777355') FILE_ID,
dbms_utility.data_block_address_block('16777355') BLOCK_ID
from dual; 2 3 FILE_ID BLOCK_ID
---------- ----------
4 139 SQL> select header_file,header_block from dba_segments where segment_name='SYS_C00147516'; HEADER_FILE HEADER_BLOCK
----------- ------------
4 138 select dbms_utility.data_block_address_file(16777355)fno,
dbms_utility.data_block_address_block(16777355) bkno from dualSQL> 2
3 ; FNO BKNO
---------- ----------
4 139; SQL> alter system dump datafile 4 block 139; row#0[8013] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 00
col 0; len 10; (10): 31 20 20 20 20 20 20 20 20 20 ---表示1
row#1[7842] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 09
col 0; len 10; (10): 31 30 20 20 20 20 20 20 20 20 ---表示10
row#2[7823] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 0a
col 0; len 10; (10): 31 31 20 20 20 20 20 20 20 20 --表示11
row#3[7804] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 0b
col 0; len 10; (10): 31 32 20 20 20 20 20 20 20 20 --表示12
row#4[7785] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 0c
col 0; len 10; (10): 31 33 20 20 20 20 20 20 20 20 --表示13
row#5[7766] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 0d
col 0; len 10; (10): 31 34 20 20 20 20 20 20 20 20 --表示14
row#6[7747] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 0e
col 0; len 10; (10): 31 35 20 20 20 20 20 20 20 20 --表示15
row#7[7728] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 0f
col 0; len 10; (10): 31 36 20 20 20 20 20 20 20 20 --表示16
row#8[7709] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 10
col 0; len 10; (10): 31 37 20 20 20 20 20 20 20 20 --表示17
row#9[7690] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 11
col 0; len 10; (10): 31 38 20 20 20 20 20 20 20 20 --表示18
row#10[7671] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 12
col 0; len 10; (10): 31 39 20 20 20 20 20 20 20 20 --表示19
row#11[7994] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 01
col 0; len 10; (10): 32 20 20 20 20 20 20 20 20 20 --表示2
row#12[7652] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 13
col 0; len 10; (10): 32 30 20 20 20 20 20 20 20 20 --表示20
row#13[7633] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 14
col 0; len 10; (10): 32 31 20 20 20 20 20 20 20 20 --表示21
row#14[7614] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 15
col 0; len 10; (10): 32 32 20 20 20 20 20 20 20 20 --表示22
row#15[7595] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 16
col 0; len 10; (10): 32 33 20 20 20 20 20 20 20 20 --表示23
row#16[7576] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 17
col 0; len 10; (10): 32 34 20 20 20 20 20 20 20 20 --表示24
row#17[7557] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 18
col 0; len 10; (10): 32 35 20 20 20 20 20 20 20 20 --表示25
row#18[7975] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 02
col 0; len 10; (10): 33 20 20 20 20 20 20 20 20 20 --表示3
row#19[7956] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 03
col 0; len 10; (10): 34 20 20 20 20 20 20 20 20 20 --表示4
row#20[7937] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 04
col 0; len 10; (10): 35 20 20 20 20 20 20 20 20 20 --表示5
row#21[7918] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 05
col 0; len 10; (10): 36 20 20 20 20 20 20 20 20 20 --表示6
row#22[7899] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 06
col 0; len 10; (10): 37 20 20 20 20 20 20 20 20 20 --表示7
row#23[7880] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 07
col 0; len 10; (10): 38 20 20 20 20 20 20 20 20 20 --表示8
row#24[7861] flag: ------, lock: 2, len=19, data:(6): 01 00 00 85 00 08
col 0; len 10; (10): 39 20 20 20 20 20 20 20 20 20 --表示9
----- end of leaf block dump -----
End dump data blocks tsn: 4 file#: 4 minblk 139 maxblk 139 DECLARE
n VARCHAR2 (2000);
BEGIN
DBMS_STATS.convert_raw_value ('35', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
DBMS_STATS.convert_raw_value ('20', n);
DBMS_OUTPUT.put_line (n);
END; 结论 heap表主键只有对应的列 heap 表排序:
SQL> select * from t1 order by t1.id; ID A1 A2
---------- ---------- ----------
1 1 a1
10 10 a10
11 11 a11
12 12 a12
13 13 a13
14 14 a14
15 15 a15
16 16 a16
17 17 a17
18 18 a18
19 19 a19 ID A1 A2
---------- ---------- ----------
2 2 a2
20 20 a20
21 21 a21
22 22 a22
23 23 a23
24 24 a24
25 25 a25
3 3 a3
4 4 a4
5 5 a5
6 6 a6 ID A1 A2
---------- ---------- ----------
7 7 a7
8 8 a8
9 9 a9 25 rows selected. t1表 id列为字符串,排序是按字符串排序 /***创建t3表改为数值型/ create table t3 (id int primary key,a1 char(10),a2 char(10)); begin
for i in 1 .. 25
loop
insert into t3 values(i,i,'a'||i);
end loop
;
commit;
end; BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCAN',
tabname => 'T3',
estimate_percent => 100,
method_opt => 'for all columns size repeat',
no_invalidate => FALSE,
degree => 8,
cascade => TRUE);
END;
/ SQL> select TABLE_NAME,TABLESPACE_NAME,CLUSTER_NAME, IOT_NAME from user_tables; TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME
-------------------- ------------------------------ ------------------------------ ------------------------------
T1 USERS
T3 USERS
T2 SQL> select object_name,object_id from user_objects; OBJECT_NAME OBJECT_ID
------------------------------ ----------
SYS_C00147518 260454
T3 260453
SYS_IOT_TOP_260451 260452
T1 260449
T2 260451
SYS_C00147516 260450 6 rows selected. SQL> select index_name,INDEX_TYPE,TABLE_OWNER,TABLE_NAME,table_type from user_indexes; INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME TABLE_TYPE
------------------------------ --------------------------- ------------------------------ -------------------- -----------
SYS_C00147516 NORMAL SCAN T1 TABLE
SYS_IOT_TOP_260451 IOT - TOP SCAN T2 TABLE
SYS_C00147518 NORMAL SCAN T3 TABLE 2.将索引dump到trace文件中
SQL> select value from v$diag_info where name='Default Trace File'; VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/ncdb/podinndb/trace/podinndb_ora_29363.trc SQL> alter session set events 'immediate trace name treedump level 260454'; 会话已更改。 ----- begin tree dump
leaf: 0x10000a3 16777379 (0: nrow: 25 rrow: 25)
----- end tree dump SQL> select index_name, PREFIX_LENGTH, BLEVEL, LEAF_BLOCKS from user_indexes where index_name='SYS_C00147518'; INDEX_NAME PREFIX_LENGTH BLEVEL LEAF_BLOCKS
------------------------------ ------------- ---------- -----------
SYS_C00147518 0 1 SQL> select dbms_utility.data_block_address_file('16777379') FILE_ID,
dbms_utility.data_block_address_block('16777379') BLOCK_ID
from dual; 2 3 FILE_ID BLOCK_ID
---------- ----------
4 163 SQL> select header_file,header_block from dba_segments where segment_name='SYS_C00147518'; HEADER_FILE HEADER_BLOCK
----------- ------------
4 162 SQL> select dbms_utility.data_block_address_file(16777379)fno,
dbms_utility.data_block_address_block(16777379) bkno from dual 2 ; FNO BKNO
---------- ----------
4 163 SQL> alter system dump datafile 4 block 163; row#0[8021] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 00
col 0; len 2; (2): c1 02 ---表示1
row#1[8010] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 01
col 0; len 2; (2): c1 03 --表示2
row#2[7999] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 02
col 0; len 2; (2): c1 04 --表示3
row#3[7988] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 03
col 0; len 2; (2): c1 05 --表示4
row#4[7977] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 04
col 0; len 2; (2): c1 06 --表示5
row#5[7966] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 05
col 0; len 2; (2): c1 07
row#6[7955] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 06
col 0; len 2; (2): c1 08
row#7[7944] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 07
col 0; len 2; (2): c1 09
row#8[7933] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 08
col 0; len 2; (2): c1 0a
row#9[7922] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 09
col 0; len 2; (2): c1 0b
row#10[7911] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 0a
col 0; len 2; (2): c1 0c
row#11[7900] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 0b
col 0; len 2; (2): c1 0d
row#12[7889] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 0c
col 0; len 2; (2): c1 0e
row#13[7878] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 0d
col 0; len 2; (2): c1 0f
row#14[7867] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 0e
col 0; len 2; (2): c1 10
row#15[7856] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 0f
col 0; len 2; (2): c1 11
row#16[7845] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 10
col 0; len 2; (2): c1 12
row#17[7834] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 11
col 0; len 2; (2): c1 13
row#18[7823] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 12
col 0; len 2; (2): c1 14
row#19[7812] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 13
col 0; len 2; (2): c1 15
row#20[7801] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 14
col 0; len 2; (2): c1 16
row#21[7790] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 15
col 0; len 2; (2): c1 17
row#22[7779] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 16
col 0; len 2; (2): c1 18 --表示23
row#23[7768] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 17
col 0; len 2; (2): c1 19 --表示24
row#24[7757] flag: ------, lock: 2, len=11, data:(6): 01 00 00 9d 00 18
col 0; len 2; (2): c1 1a --表示25
----- end of leaf block dump -----
End dump data blocks tsn: 4 file#: 4 minblk 163 maxblk 163 declare
n number;
begin
dbms_stats.convert_raw_value('c102',
n);
dbms_output.put_line(n);
end; SQL> select * from t3 order by t3.id; ID A1 A2
---------- ---------- ----------
1 1 a1
2 2 a2
3 3 a3
4 4 a4
5 5 a5
6 6 a6
7 7 a7
8 8 a8
9 9 a9
10 10 a10
11 11 a11 ID A1 A2
---------- ---------- ----------
12 12 a12
13 13 a13
14 14 a14
15 15 a15
16 16 a16
17 17 a17
18 18 a18
19 19 a19
20 20 a20
21 21 a21
22 22 a22 ID A1 A2
---------- ---------- ----------
23 23 a23
24 24 a24
25 25 a25 25 rows selected. 结论 字符串和数值型 排序方式不同
heap表按字符串和数值型排序规则的更多相关文章
- Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
1. 要求 对List列表中的数据进行排序(正序.倒序),列表中的数据包括:整型(Integer).字符串(String).日期(Date)等.对于字符串,要求允许对它按照整型进行排序. 2. 实现思 ...
- ng-model值字符串转数值型(convertToNumber directive)
<select ng-model="model.id" convert-to-number> <option value="0">Zer ...
- sql server 查看表中某一字段的排序规则
SELECT o.name,o.object_id,c.name,c.column_id,c.collation_name FROM sys.columns c JOIN sys.obj ...
- SQL:无法解决 equal to 操作的排序规则冲突。
更改存储过程的时候,在SQL中出现了 “无法解决 equal to 操作的排序规则冲突”错误,网上搜之,发现是表之间元素创建时排序规则不同(一个是collate Chinese_PRC_CI_AI_W ...
- SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法
我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...
- 数据库排序规则的冲突(理解collate Chinese_PRC_CI_AS)
之前碰到了数据库排序规则冲突问题,即百度或者 Google 的老话题: “ 无法解决 equal to 操作中‘ sql_latin1_general_cp1_ci_as ’和‘ chinese_pr ...
- 全库修改SQL Server现有排序规则
近日,在项目Debug过程中发现了SQL Server排序规则冲突的问题. 由于原数据库是从英文环境的SQL中生成的,其排序规则为“SQL_Latin1_General_CP1_CI_AS”,备份到本 ...
- 数据库字符集与排序规则(Character Set And Collation)
数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). (注意:Collation原意为校对,校勘,但是根据实际使用场景 ...
- 2021-2-18:请你说说MySQL的字符集与排序规则对开发有哪些影响?
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...
随机推荐
- Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试
1. Map集合的功能概述 (1)添加功能 V put(K key,V value):添加元素.这个其实还有另一个功能?先不告诉你,等会讲 如果键是第一次存储,就直接存储元素,返回null 如果键不是 ...
- Java基础知识强化之网络编程笔记01:InetAddress类的概述和使用
1. InetAddress类 InetAddress是Java对IP地址的封装,在java.net中有许多类都使用到了InetAddress,包括ServerSocket,Socket,Datagr ...
- Android(java)学习笔记184:生成 4种 不同权限的文件
1.首先我们编写一个生成 4种 不同权限的文件的程序案例: (1)首先是activity_main.xml文件: <RelativeLayout xmlns:android="http ...
- python learning_curve函数
这个函数需要引用sklearn包 import sklearn from sklearn.learning_curve import learning_curve 这个函数的调用格式是: learni ...
- Socket服务器整体架构概述
转载:http://www.cnblogs.com/tianzhiliang/archive/2010/10/28/1863684.html Socket服务器主要用于提供高效.稳定的数据处理.消息转 ...
- C#线程池基础
池(Pool)是一个很常见的提高性能的方式.比如线程池连接池等,之所以有这些池是因 为线程和数据库连接的创建和关闭是一种比较昂贵的行为.对于这种昂贵的资源我们往往会考虑在一个池容器中放置一些资源,在用 ...
- 手把手教你Windows下Go语言的环境搭建
1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把 ...
- 读懂IL代码(四)
这一篇是IL系列的最后一篇的,主要是要说一下IL中的流程控制.我相信,经过前面三篇的介绍,看IL代码应该不是什么大问题了吧.好吧,闲话不多说了,就来简单的说一下吧. 还是跟前几篇一样,以例子来解释说明 ...
- C#中检查网络是否连通的二种方法
using System; 2 using System.Collections.Generic; 3 using System.Text; 4 //方法一 5 using System.Ru ...
- 理解java Web项目中的路径问题
本文以项目部署在tomcat服务器为例,其他相信也是一样的. 先说明请求页面的写法,在web中,页面路径主要写的有以下几种 1.请求重定向 2.浏览器的请求被服务器请求到新页面(我称为“转发”) 3. ...