[20181124]關於降序索引問題3.txt

来源:https://www.cnblogs.com/lfree/archive/2018/11/24/10013434.html
-Advertisement-
Play Games

[20181124]關於降序索引問題3.txt--//鏈接:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函數sys_op_descend.--//鏈接:http://blog.itpub.net/267265/view ...


[20181124]關於降序索引問題3.txt

--//鏈接:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。
--//實際上使用函數sys_op_descend.

--//鏈接:http://blog.itpub.net/267265/viewspace-2221527/,探討了僅僅設計字元串的編碼.
--//字元串0x00,0x0000,0x0001,0x00NN(0xNN>=0x02),0x01,0x0100,0x0101,0x01NN(0xNN>=0x02) 單獨編碼。畫一個表格:
ascii碼                 編碼
---------------------------------------------
0x00                    FEFE
0x0000                  FEFD
0x0001                  FEFC
0x00NN(0xNN>=0x02)      FEFB
0x01                    FEFA
0x0100                  FEF9
0x0101                  FEF8        
0x01NN(0xNN>=0x02)      FEF7
---------------------------------------------

--//對於numbe,date類型如何呢?
--//我在沒有測試前,感覺不會出現像字元串那樣的編碼,因為數據類型,日期類型保存格式規避0x00,這樣不會出現像字元串那樣的情況.
--//還是通過測試說明問題.

1.環境:
SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.2.0.1.0     Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0

2.測試:
SCOTT@test01p> select sys_op_descend(10001),dump(10001,16) c30 from dual ;
SYS_OP_DESCE C30
------------ ------------------------------
3CFDFEF7FDFF Typ=2 Len=4: c3,2,1,2

--//還是有點出乎我的意料,可以發現還是按照上面字元串編碼的規律:
3C FD FEF7 FD
c3 02 01  02
--//中間 01 編碼 FEF7(按照0x01NN編碼).

SCOTT@test01p> select sys_op_descend(1000001),dump(1000001,16) c30 from dual ;
SYS_OP_DESCE C30
------------ ------------------------------
3BFDFEF8FDFF Typ=2 Len=5: c4,2,1,1,2

3B FD FEF8 FD
c4 02 0101 02
--//中間 0101 對應編碼 0x0101.

3.繼續測試日期看看:
--//註意一個細節date類型,oracle存在2種類型(12,13),保存在資料庫塊中的類型是type=12.
SCOTT@test01p> select dump(to_date('1980-12-17 00:00:00','yyyy-mm--dd hh24:mi:ss'),16) c40 ,dump(hiredate,16) c40 ,hiredate from emp where rownum=1 ;
C40                                      C40                                      HIREDATE
---------------------------------------- ---------------------------------------- -------------------
Typ=13 Len=8: bc,7,c,11,0,0,0,0          Typ=12 Len=7: 77,b4,c,11,1,1,1           1980-12-17 00:00:00

--//可以發現type=12,時分秒都在原來的基礎上+1,這樣規避0x00.月份在1-12不會出現0的情況,不加1.日期在1-31,也是一樣0的情況.
--//一些細節可以看鏈接:http://blog.itpub.net/4227/viewspace-68514/

SCOTT@test01p> select sys_op_descend(hiredate) c40 ,dump(hiredate,16) c40,hiredate from emp where rownum=1 ;
C40                                      C40                                      HIREDATE
---------------------------------------- ---------------------------------------- -------------------
884BF3EEFEF8FEFAFF                       Typ=12 Len=7: 77,b4,c,11,1,1,1           1980-12-17 00:00:00


88 4B F3 EE FEF8 FEFA
77 b4 0c 11 0101 01
--//對照前面的編碼都可以對上.

4.是否真實是這樣呢?建立表測試看看:

SCOTT@test01p> create table t ( id number,cr_date date);
Table created.

insert into t values (1,sysdate);
insert into t values (10001,trunc(sysdate));
insert into t values (1000001,to_date('1980-12-17 00:00:00','yyyy-mm-dd hh24:mi:ss'));
commit ;

SCOTT@test01p> select * from t;
        ID CR_DATE
---------- -------------------
         1 2018-11-24 20:31:32
     10001 2018-11-24 00:00:00
   1000001 1980-12-17 00:00:00

--//分別看看降序索引的情況:
SCOTT@test01p> create  index if_t_all on t(id ,id desc ,cr_date,cr_date desc);
Index created.

SCOTT@test01p> select segment_name,header_file,header_block from dba_segments where owner=user and segment_name in ('IF_T_ALL');
SEGMENT_NAME         HEADER_FILE HEADER_BLOCK
-------------------- ----------- ------------
IF_T_ALL                      11          194

SCOTT@test01p> alter system flush buffer_cache;
System altered.

SCOTT@test01p> alter system dump datafile 11 block 195;
System altered.

--//檢查轉儲文件:
row#0[8003] flag: -------, lock: 0, len=33
col 0; len 2; (2):  c1 02
col 1; len 3; (3):  3e fd ff
col 2; len 7; (7):  78 76 0b 18 15 20 21
col 3; len 8; (8):  87 89 f4 e7 ea df de ff
col 4; len 6; (6):  02 c0 00 be 00 00
row#1[7964] flag: -------, lock: 0, len=39
col 0; len 4; (4):  c3 02 01 02
col 1; len 6; (6):  3c fd fe f7 fd ff
col 2; len 7; (7):  78 76 0b 18 01 01 01
col 3; len 9; (9):  87 89 f4 e7 fe f8 fe fa ff
col 4; len 6; (6):  02 c0 00 be 00 01
row#2[7924] flag: -------, lock: 0, len=40
col 0; len 5; (5):  c4 02 01 01 02
col 1; len 6; (6):  3b fd fe f8 fd ff
col 2; len 7; (7):  77 b4 0c 11 01 01 01
col 3; len 9; (9):  88 4b f3 ee fe f8 fe fa ff
col 4; len 6; (6):  02 c0 00 be 00 02
----- end of leaf block Logical dump -----

--//可以發現與前面單獨測試都一樣.看來我以前思考問題簡單化了.^_^.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 代碼自動上線功能 企業部署代碼上線是件比較麻煩的事情,還好我們有jenkins這個持續集成的軟體可以幫助我們做很多的事情,現在我們就 來測試用jenkins推送代碼上線。 我們這裡測試的是一個html的web頁面監控的代碼上線,做一個簡單的小教程,先不涉及動態語言和資料庫。 準備環境 準備三台伺服器 ...
  • 1、cat 顯示出文件的全部內容 (1)格式:cat 文件名 -n 顯示行號 (2)特點:一次性顯示所有文件內容 2、tac 從最後一行倒著顯示文件全部內容 3、more 全屏方式分頁顯示文件內容 回車翻一行 空格向下翻一頁 b 向上翻一頁 q 退出 4、less 與more相同,擴展內容更多 mo ...
  • 說明:以下是個人的見解,不一定都正確,如有錯誤,歡迎指正! 一,shell腳本的運行方式,最常見的有以下幾種: 1 ) . xxx.sh,註意,前面是一個點'.' 2 ) source xxx.sh,這種方式和第一種的方式效果是一樣的 3)./xxx.sh 4) sh xxx.sh 5) bash ...
  • 8、修改用戶限制 9、修改用戶驗證選項 10、修改用戶配置文件 11、修改用戶 12、創建目錄 註:雲機器預設無法用ctrl+alt+f7切換至圖形界面,而且無gnom桌面,所以為了識別>256color,進行以下操作 yum groupinstall "X Window System" ##yum ...
  • 1、檢查必要的安裝包是否安裝 命令腳本: rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-header ...
  • 172.18.237.14:一臺主機上安裝LAMP環境以及zabbix_server、zabbix_agentd 一、安裝zibbix-server 1、環境要求 yum install mysql-libs mysql-devel curl-devel gcc gcc-c++ –y 2、編譯安裝 ...
  • 1.軟硬體準備軟體:推薦使用VMwear,我用的是VMwear 10鏡像:CentOS7 硬體:因為是在宿主機上運行虛擬化軟體安裝centos,I3CPU雙核、硬碟500G、記憶體4G以上。 2.虛擬機準備1.打開VMwear選擇新建虛擬機 2.典型安裝與自定義安裝典型安裝:VMwear會將主流的配置 ...
  • Redis概述 1.是一個開源的,先進的<key,value>存儲,並用與構建高性能,可擴展的應用程式的完美解決方案 2.從它的許多競爭繼承來的三個主要特點: l Redis資料庫完全在記憶體中,使用磁碟僅用於持久性。 l 相比許多鍵值數據存儲,Redis擁有一套較為豐富的數據類型。String,Li ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...