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

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

[20181124]關於降序索引問題2.txt--//鏈接:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函數sys_op_descend.--//前面已經提到結尾加入FF,為了排序的需要。這樣導致chr(0),以及後續 ...


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

--//鏈接:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。
--//實際上使用函數sys_op_descend.
--//前面已經提到結尾加入FF,為了排序的需要。這樣導致chr(0),以及後續的chr(1)字元出現問題。
--//一些細節繼續探究:

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> WITH x0
  2       AS (SELECT '00' a, CHR (0) b FROM DUAL
  3           UNION ALL
  4           SELECT '01', CHR (1) FROM DUAL)
  5  SELECT x1.a c10, sys_op_descend (x1.b) c20
  6    FROM x0 x1;

C10        C20
---------- --------------------
00         FEFEFF
01         FEFAFF

SCOTT@test01p> WITH x0
  2       AS (SELECT '00' a, CHR (0) b FROM DUAL
  3           UNION ALL
  4           SELECT '01', CHR (1) FROM DUAL)
  5  SELECT x1.a || x2.a c10, sys_op_descend (x1.b || x2.b) c20
  6    FROM x0 x1, x0 x2;
C10        C20
---------- --------------------
0000       FEFDFF
0001       FEFCFF
0100       FEF9FF
0101       FEF8FF

--//註意以上編碼。繼續測試:

WITH x0
     AS (SELECT '00' a, CHR (0) b FROM DUAL
         UNION ALL
         SELECT '01', CHR (1) FROM DUAL
         union all
         SELECT '02', CHR (2) FROM DUAL
         )
SELECT x1.a || x2.a c10, sys_op_descend (x1.b || x2.b) c20
  FROM x0 x1, x0 x2;

C10        C20
---------- --------------------
0000       FEFDFF
0001       FEFCFF
0002       FEFBFDFF
0100       FEF9FF
0101       FEF8FF
0102       FEF7FDFF
0200       FDFEFEFF
0201       FDFEFAFF
0202       FDFDFF
9 rows selected.

--//不看結尾的ff。可以看出編碼的規律
--//字元串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
---------------------------------------------

--//看一個複雜一點的例子:

WITH x0
     AS (SELECT '00' a, CHR (0) b FROM DUAL
         UNION ALL
         SELECT '01', CHR (1) FROM DUAL
         UNION ALL
         SELECT '02', CHR (2) FROM DUAL)
SELECT x1.a || x2.a || x3.a c10
      ,sys_op_descend (x1.b || x2.b || x3.b) c20
      ,TO_CHAR (ASCII ('z'), 'FMXX') || x1.a || x2.a || x3.a c10
      ,sys_op_descend ('z' || x1.b || x2.b || x3.b) c20
  FROM x0 x1, x0 x2, x0 x3;

C10        C20                  C10        C20
---------- -------------------- ---------- --------------------
000000     FEFDFEFEFF           7A000000   85FEFDFEFEFF
000001     FEFDFEFAFF           7A000001   85FEFDFEFAFF
000002     FEFDFDFF             7A000002   85FEFDFDFF
000100     FEFCFEFEFF           7A000100   85FEFCFEFEFF
000101     FEFCFEFAFF           7A000101   85FEFCFEFAFF
000102     FEFCFDFF             7A000102   85FEFCFDFF
000200     FEFBFDFEFEFF         7A000200   85FEFBFDFEFEFF
000201     FEFBFDFEFAFF         7A000201   85FEFBFDFEFAFF
000202     FEFBFDFDFF           7A000202   85FEFBFDFDFF
010000     FEF9FEFEFF           7A010000   85FEF9FEFEFF
010001     FEF9FEFAFF           7A010001   85FEF9FEFAFF
010002     FEF9FDFF             7A010002   85FEF9FDFF
010100     FEF8FEFEFF           7A010100   85FEF8FEFEFF
010101     FEF8FEFAFF           7A010101   85FEF8FEFAFF
010102     FEF8FDFF             7A010102   85FEF8FDFF
010200     FEF7FDFEFEFF         7A010200   85FEF7FDFEFEFF
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
010201     FEF7FDFEFAFF         7A010201   85FEF7FDFEFAFF
010202     FEF7FDFDFF           7A010202   85FEF7FDFDFF
020000     FDFEFDFF             7A020000   85FDFEFDFF
020001     FDFEFCFF             7A020001   85FDFEFCFF
020002     FDFEFBFDFF           7A020002   85FDFEFBFDFF
020100     FDFEF9FF             7A020100   85FDFEF9FF
020101     FDFEF8FF             7A020101   85FDFEF8FF
020102     FDFEF7FDFF           7A020102   85FDFEF7FDFF
020200     FDFDFEFEFF           7A020200   85FDFDFEFEFF
020201     FDFDFEFAFF           7A020201   85FDFDFEFAFF
020202     FDFDFDFF             7A020202   85FDFDFDFF
27 rows selected.

--//我僅僅分析下劃線記錄.遇到00,01需要上面的特殊編碼。
--//010200,變成01,02,00 ,0102 對應的就是01NN,02編碼,這樣就是FEF7,FD.剩下的00 對應編碼就是 FEFE。
--//這樣010200 對應編碼就是 FEF7 FD FEFE FF 。

--//7A010200,變成 7A,01,02,00 , 7A與FF異或= 85, 01對應編碼要結合後面的02,
--//0102 對應的就是01NN,02編碼,這樣就是FEF7,FD.剩下的00 對應編碼就是 FEFE。
--//這樣7A010200 對應編碼就是 85 FEF7 FD FEFE FF.

3.總結:
--//總之一點就是排序的需要,跳出1個坑(結尾加FF),又進入一個更深的坑chr(0),占用chr(1)的編碼,又進入一個更深的坑。
--//結果出現這樣特殊的編碼,實際上也給一些開發提供一些借鑒,看看oracle技術人員如何實現這些,雖然不知道該如何
--//寫這些代碼。

--//如果應用程式就不會考慮這樣的情況,但是對於oracle這樣的資料庫軟體,必須註意這些細節,導致編碼發熱複雜性.
--//我自己花了一個晚上,才從中總結出規律,又有點鑽牛角尖了。^_^。


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

-Advertisement-
Play Games
更多相關文章
  • 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 ...
  • [20181124]關於降序索引問題3.txt--//鏈接:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函數sys_op_descend.--//鏈接:http://blog.itpub.net/267265/view ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...