日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建時空索引

時空索引包括Z-ORDER索引和網格二級索引,合理使用時空索引可以有效提高時空查詢的效率。本文介紹創建兩種時空索引的方法和示例。

Z-ORDER索引

Z-ORDER索引分為Z-ORDER主鍵索引和Z-ORDER二級索引兩種。

使用區別

下表介紹Z-ORDER主鍵索引和Z-ORDER二級索引在使用過程中的區別。

時空索引分類

是否支持多個時空列的構建

備注

Z-ORDER主鍵索引

支持對多個時空列建立索引,但是建議只包含一個時空列,其他時空列可以構建時空二級索引。

只能在創建時空數據表時添加主鍵索引,添加后不支持修改、增加和刪除操作。

Z-ORDER二級索引

支持對多個時空列建立索引。

可以在創建時空數據表時添加二級索引,也可以在創建時空數據表之后添加二級索引。添加后支持增加和刪除時空二級索引,不支持修改時空二級索引。

創建Z-ORDER主鍵索引

時空編碼作為主鍵索引的組成部分,此時主鍵索引為時空主鍵索引。創建時空主鍵索引的語法示例如下:

  • Z-ORDER索引函數對g列進行時空編碼。

    -- 主鍵索引只包含Z-ORDER
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, PRIMARY KEY(Z-ORDER(g)));
    
    -- 主鍵索引包含Z-ORDER和ID的組合
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, PRIMARY KEY(Z-ORDER(g),id));
  • Z-ORDER索引函數對g列和t列進行時空編碼。

    -- 主鍵索引只包含Z-ORDER
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(Z-ORDER(g,t)));
    
    -- 主鍵索引包含Z-ORDER和ID的組合
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(Z-ORDER(g,t),id));

創建Z-ORDER二級索引

時空編碼作為二級索引的組成部分,此時二級索引為時空二級索引。創建時空二級索引的示例如下:

  1. 創建主表,用于存儲時空數據。

    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(id));
  2. 設置主表的屬性。需要將主表的寫入模式MUTABILITY設置為MUTABLE_LATEST,一致性CONSISTENCY設置為strong

    ALTER TABLE point_table SET 'MUTABILITY'='MUTABLE_LATEST', 'CONSISTENCY'='strong';
  3. 創建時空二級索引。

    • 使用Z-ORDER索引函數對g列進行時空編碼。

      • 方式一:不冗余數據。

        CREATE INDEX idx ON point_table (Z-ORDER(g));
      • 方式二:采用include(g)進行數據冗余,避免回表查詢。

        CREATE INDEX idx ON point_table (Z-ORDER(g)) INCLUDE (g);
    • 使用Z-ORDER索引函數對g列和t列進行時空編碼。

      • 方式一:不冗余數據。

        CREATE INDEX idx ON point_table (Z-ORDER(g,t));
      • 方式二:采用include(g)進行數據冗余,避免回表查詢。

        CREATE INDEX idx ON point_table (Z-ORDER(g,t)) INCLUDE (g);

網格二級索引

為WGS84坐標系下的面類型(POLYGON或MULTIPOLYGON)或線類型(LINESTRING或MULTILINESTRING)數據創建網格二級索引,通過面覆蓋到的網格來實現對面數據的索引。當查詢條件包含對面的判斷條件時,可使用該索引進行加速。

重要

僅寬表引擎2.6.7.5及以上版本,支持線類型(LINESTRING或MULTILINESTRING)。如果您的寬表引擎無法通過控制臺進行升級,請聯系Lindorm技術支持(釘釘號:s0s3eg3)。

創建網格二級索引

  1. 創建主表,用于存儲面數據或線數據。可以將面數據列或線數據列的類型定義為以下幾種:

    • 面數據列的類型定義為GEOMETRY(POLYGON)。

      CREATE TABLE test_table1 (id INT, g GEOMETRY(POLYGON), name VARCHAR, t LONG, PRIMARY KEY(id));
    • 面數據列的類型定義為GEOMETRY(MULTIPOLYGON)。

      CREATE TABLE test_table1 (id INT, g GEOMETRY(MULTIPOLYGON), name VARCHAR, t LONG, PRIMARY KEY(id));
    • 線數據列的類型定義為GEOMETRY(LINESTRING)。

      CREATE TABLE test_table1 (id INT, g GEOMETRY(LINESTRING), name VARCHAR, t LONG, PRIMARY KEY(id));
    • 線數據列的類型定義為GEOMETRY(MULTILINESTRING)。

      CREATE TABLE test_table1 (id INT, g GEOMETRY(MULTILINESTRING), name VARCHAR, t LONG, PRIMARY KEY(id));
    • 將數據列的類型定義為不確定具體類型的GEOMETRY。

      CREATE TABLE test_table1 (id INT, g GEOMETRY, name VARCHAR, t LONG, PRIMARY KEY(id));
  2. 設置主表的屬性。需要將主表的寫入模式MUTABILITY設置為MUTABLE_LATEST,一致性CONSISTENCY設置為strong

    ALTER TABLE test_table1 SET 'MUTABILITY'='MUTABLE_LATEST', 'CONSISTENCY'='strong';
  3. 使用S2索引函數對g列計算指定精度下覆蓋的網格。目前只針對靜態的面類型表,默認采用異步創建模式,示例代碼如下:

    CREATE INDEX s2_idx ON test_table1 (s2(g, 10));

    結果驗證

    您可以通過SHOW INDEX FROM test_table1;語句查看索引是否創建成功。

  4. 構建索引。

    BUILD INDEX s2_idx ON test_table1;
    說明

    建議主表數據全部寫入完成后再執行BUILD INDEX同步歷史數據。BUILD INDEX語句開始執行后如果主表有新增數據,不會被同步至索引表中。