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的字符集与排序规则对开发有哪些影响?
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...
随机推荐
- ionic 项目分享【转】No.3
写在文章前:由于最近研究ionic框架,深感这块的Demo寥寥可数,而大家又都藏私,堂堂天朝,何时才有百家争鸣之象,开源精神吾辈当仁不让! 原文地址暂时忘记了 ,如果有知道的麻烦在评论处帮忙说一下 , ...
- vs2015中ctrl+shift+F进行“在文件中查找”,有时候无效?
搜狗拼音的默认简繁切换快捷键是ctrl+shift+F,改掉以后vs就可以收到这个按键消息了
- [Mime] MimeHeaders--MimeHeader帮助类 (转载)
点击下载 MimeHeaders.rar 这个类是关于Mime的Headers类看下面代码吧 /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 // ...
- IPX/SPX
转自百度百科 方便阅读 IPX/SPX 目 录 1英文原义 2中文释义 3IPX协议 3.1 说明 3.2 应用 4SPX协议 4.1 说明 4.2 应用 1英文原义 IPX/SPX 2中 ...
- # Day04-Android
Day04-Android 标签(空格分隔): andrroid 1.制作界面 2.在写Activity. Logcat LayoutInflate把Xml转换纯成View的工具. 自定义吐司 Lay ...
- C#当中的多线程_任务并行库(下)
4.8 处理任务中的异常 下面这个例子讨论了任务当中抛出异常,以及任务异常的获取 class Program { static void Main(string[] a ...
- java - String 浅谈
/** * String s1 = "a"; * 编译器会先检查常量池中是否已经有"a": * 如果没有,则在常量池先创建,后引用. * 如果有,则直接引用; ...
- sqlserver2008安装出现跨语言
我在安装sqlserver2008的时候出现了一个问题,安装到一半的时候出现 跨语言安装失败 ,我细细的查了下问题,我装的安装语言绝对没有错的吧,然后我后退几步又是同样的错误,最后我把镜像重新加载到虚 ...
- UITabBar的隐藏
方式一: // 重写导航控制器的push方法 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL) ...
- 从1到n整数中1出现的次数
题目如题 如 5 中1出现的次数 为1 12中1出现的次数为5 public class NumberOf1Between1AndN { /* *输入一个整数n,求从1到n这N个十进制表示中1出现的次 ...