全部產品
Search
文件中心

PolarDB:RANGE_HASH

更新時間:Jul 06, 2024

本文將介紹RANGE_HASH函數的使用方式。

適用情境

適用於需要有兩個拆分鍵,並且查詢時僅有其中一個拆分索引值的情境。

使用限制

  • 拆分鍵的類型必須是字元類型或數字類型,兩個拆分鍵類型必須保持一致。
  • 兩個拆分鍵皆不能修改。
  • 折分鍵暫時不支援做範圍查詢。
  • 插入資料時兩個拆分鍵的後N位需確保一致。
  • 字串長度需不少於N位
  • PolarDB-X 1.0執行個體的版本需為5.1.28-1320920或以上版本

路由方式

根據任一拆分鍵後N位計算雜湊值,然後再按分庫數取餘,完成路由計算。N為函數第三個參數。例如,RANGE_HASH(COL1, COL2, N) ,計算時會優先選擇COL1,截取其後N位進行計算。 COL1不存在時再選擇COL2。

樣本

假設PolarDB-X 1.0裡已經分了8個物理庫,現在需要按買家ID和訂單ID對訂單表進行分庫;查詢時條件僅有買家ID或訂單ID,那麼您可以使用如下DDL語句構建訂單表:

create table test_order_tb (  
    id int, 
    buyer_id varchar(30) DEFAULT NULL,  
    order_id varchar(30) DEFAULT NULL, 
    create_time datetime DEFAULT NULL,
    primary key(id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 
    dbpartition by RANGE_HASH(buyer_id,order_id, 10) 
    tbpartition by RANGE_HASH (buyer_id,order_id, 10) tbpartitions 3;