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

倒排索引

倒排索引是信息檢索領域常用的索引技術。它通過將文本分割成單詞來構建索引,以便快速查找單詞在文檔中的出現(xiàn)位置。云數(shù)據(jù)庫 SelectDB 版支持倒排索引,可用于支持文本類型的全文檢索、以及普通數(shù)值和日期類型的等值或范圍查詢,能夠快速從大量數(shù)據(jù)中篩選出滿足條件的數(shù)據(jù)。本文介紹云數(shù)據(jù)庫SelectDB版倒排索引的功能,以及如何創(chuàng)建和使用該功能。

功能介紹

云數(shù)據(jù)庫SelectDB版的倒排索引實現(xiàn)中,表的一行對應一個文檔,一列對應文檔中的一個字段。倒排索引可以根據(jù)關鍵詞快速定位包含它的行,從而提高了WHERE子查詢的效率。

倒排索引與普通索引的不同之處在于,它的存儲層采用獨立的倒排文件,與主數(shù)據(jù)文件Segment只存在邏輯對應關系,而非與主數(shù)據(jù)文件集成在一起。這使得對索引的更新和刪除操作不需要重寫主數(shù)據(jù)文件,從而大幅降低了處理開銷。

云數(shù)據(jù)庫SelectDB版倒排索引的功能如下。

  • 支持字符串類型的全文檢索。

    • 支持字符串全文檢索。全文檢索有以下關鍵字,均可與邏輯關鍵字AND、OR、NOT組合使用。

      • MATCH_ALL:同時匹配多個關鍵字。

      • MATCH_ANY:匹配任意一個關鍵字。

      • MATCH_PHRASE:匹配短語詞組。

    • 支持字符串數(shù)組類型的全文檢索。

    • 支持英文、中文以及Unicode多語言分詞。

  • 支持字符串、數(shù)值、日期時間類型的=、!=、>、>=、<、<=快速過濾。

  • 支持完善的邏輯組合。

    • 新增索引對OR、NOT邏輯的下推。

    • 支持多個條件的任意AND、OR、NOT組合。

  • 靈活、快速的索引管理。

    • 支持在創(chuàng)建表時創(chuàng)建倒排索引。

    • 支持在已有的表中增加倒排索引。

    • 支持刪除表中已有的倒排索引。

分詞函數(shù)

分詞函數(shù)可以將一段連續(xù)的文本拆分成一個個獨立的詞語或短語。它是構建和使用倒排索引的核心,二者是密切相關的,分詞質(zhì)量和方法的選擇會直接影響倒排索引的質(zhì)量和性能。

如果您不了解一段連續(xù)文本的分詞結果,可以使用函數(shù)TOKENIZE查看文本分詞結果。

SELECT TOKENIZE('I love CHINA','"parser"="english"');
+------------------------------------------------+
| tokenize('I love CHINA', '"parser"="english"') |
+------------------------------------------------+
| ["i", "love", "china"]                         |
+------------------------------------------------+
1 row in set (0.02 sec)

SELECT TOKENIZE('武漢長江大橋','"parser"="chinese","parser_mode"="fine_grained"');
+-----------------------------------------------------------------------------------+
| tokenize('武漢長江大橋', '"parser"="chinese","parser_mode"="fine_grained"')       |
+-----------------------------------------------------------------------------------+
| ["武漢", "武漢長江大橋", "長江", "長江大橋", "大橋"]                              |
+-----------------------------------------------------------------------------------+
1 row in set (0.02 sec)

SELECT TOKENIZE('武漢市長江大橋','"parser"="chinese","parser_mode"="fine_grained"');
+--------------------------------------------------------------------------------------+
| tokenize('武漢市長江大橋', '"parser"="chinese","parser_mode"="fine_grained"')        |
+--------------------------------------------------------------------------------------+
| ["武漢", "武漢市", "市長", "長江", "長江大橋", "大橋"]                               |
+--------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

SELECT TOKENIZE('武漢市長江大橋','"parser"="chinese","parser_mode"="coarse_grained"');
+----------------------------------------------------------------------------------------+
| tokenize('武漢市長江大橋', '"parser"="chinese","parser_mode"="coarse_grained"')        |
+----------------------------------------------------------------------------------------+
| ["武漢市", "長江大橋"]                                                                 |
+----------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

SELECT TOKENIZE('I love CHINA 我愛我的祖國','"parser"="unicode"');
+-------------------------------------------------------------------+
| tokenize('I love CHINA 我愛我的祖國', '"parser"="unicode"')       |
+-------------------------------------------------------------------+
| ["i", "love", "china", "我", "愛", "我", "的", "祖", "國"]        |
+-------------------------------------------------------------------+
1 row in set (0.02 sec)

創(chuàng)建索引

創(chuàng)建索引有兩種方式,在建表的同時創(chuàng)建索引和為已存在表的某個字段增加索引。

建表時創(chuàng)建索引

此操作為同步過程,建表成功后索引即完成創(chuàng)建。

重要

倒排索引在不同數(shù)據(jù)模型中有不同的使用限制:

  • Aggregate模型:只能為Key列建立倒排索引。

  • Unique模型:需要開啟Merge on Write特性。開啟后,可以為任意列建立倒排索引。

  • Duplicate模型:可以為任意列建立倒排索引。

語法

CREATE TABLE  [IF NOT EXISTS] [db_name.]<table_name>
(
  <column_definition_list>,
  [<index_definition_list>] 
)
table_properties;

參數(shù)說明

建表參數(shù)說明

參數(shù)

是否必填

描述

db_name

目標數(shù)據(jù)庫名。

table_name

目標表名。

column_definition_list

列定義列表,更多詳情,請參見CREATE-TABLE

table_properties

表的屬性定義,如數(shù)據(jù)模型、分區(qū)分桶等。更多詳情,請參見數(shù)據(jù)模型

index_definition_list

索引定義列表。

index_definition_list說明

在創(chuàng)建表時定義索引,可以定義多個索引。其格式為index_definition[, index_definition][, index_definition]...

index_definition定義

INDEX <index_name>(<column_name>) <index_type> [PROPERTIES("<key>" = "<value>")] [COMMENT '<comment>']

index_definition參數(shù)說明

必填參數(shù)

參數(shù)名稱

參數(shù)說明

index_name

索引名稱。

column_name

索引列名稱。

index_type

索引類型。固定寫為USING INVERTED

選填參數(shù)
PROPERTIES

PROPERTIES用來指定索引是否進行分詞。它由一個或多個用“,”分割的"<key>" = "<value>"形式的鍵值對組成。

key

value

parser

指定分詞器。默認不指定代表不分詞。

  • english:英文分詞,適合英文字段,用空格和標點符號分詞,性能高。

  • chinese:中文分詞,適合包含中文的字段,性能比english分詞低。

  • unicode:多語言混合類型分詞,適用于中英文混合、多語言混合的情況。它能夠?qū)︵]箱前綴和后綴、IP地址以及字符數(shù)字混合進行分詞,并且可以對中文按字符分詞。

parser_mode

指定分詞模式,默認coarse_grained。目前parser=chinese時支持如下模式:

  • fine_grained:細粒度模式,傾向于分出比較短的詞,比如'武漢市長江大橋'會分成'武漢','武漢市','市長','長江','長江大橋','大橋'6個詞。

  • coarse_grained:粗粒度模式,傾向于分出比較長的詞,例如'武漢市長江大橋'會分成'武漢市','長江大橋'2個詞。

support_phrase

用于指定索引是否支持MATCH_PHRASE短語查詢加速,默認false。

  • true為支持,但是索引需要更多的存儲空間。

  • false為不支持,更省存儲空間,可以用MATCH_ALL查詢多個關鍵字。

char_filter

在分詞前對字符串提前處理。目前char_filter_type僅支持char_replace。

char_replace將pattern中每個char替換為一個replacement中的char。

  • char_filter_pattern:需要被替換掉的字符數(shù)組。

  • char_filter_replacement:替換后的字符數(shù)組,可以不用配置,默認為一個空格字符。

COMMENT

參數(shù)名稱

參數(shù)說明

comment

索引描述。

建表并創(chuàng)建索引示例

--   創(chuàng)建表的同時創(chuàng)建了comment的倒排索引idx_comment
--   USING INVERTED 指定索引類型是倒排索引
--   PROPERTIES("parser" = "english") 指定采用english分詞,還支持"chinese"中文分詞和"unicode"中英文多語言混合分詞,如果不指定"parser"參數(shù)表示不分詞
CREATE TABLE hackernews_1m
(
    `id` BIGINT,
    `deleted` TINYINT,
    `type` String,
    `author` String,
    `timestamp` DateTimeV2,
    `comment` String,
    `dead` TINYINT,
    `parent` BIGINT,
    `poll` BIGINT,
    `children` Array<BIGINT>,
    `url` String,
    `score` INT,
    `title` String,
    `parts` Array<INT>,
    `descendants` INT,
    INDEX idx_comment (`comment`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for comment'
)
DUPLICATE KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10;

已有表增加索引

此操作為異步操作,可通過SHOW ALTER TABLE COLUMN;查看索引增加進度。

語法

ALTER TABLE <table_name> ADD INDEX <index_name>(<column_name>) <index_type> [PROPERTIES("<key>" = "<value>")];

參數(shù)說明

此處參數(shù)與建表時的參數(shù)相同。

示例

添加一個不進行分詞的索引。

ALTER TABLE user_tb ADD INDEX index_userId(user_id) USING INVERTED ;

添加一個按照english方式進行分詞的索引。

ALTER TABLE user_tb ADD INDEX index_city(city) USING INVERTED PROPERTIES("parser" = "english");

查看索引

查看索引變更進度

通過ALTERDROP變更索引,是異步過程,可通過以下語句查看變更進度。

SHOW ALTER TABLE COLUMN;

查看表的所有索引

語法

SHOW INDEXES FROM <table_name>;

示例

SHOW INDEXES FROM user_tb;

刪除索引

刪除索引是異步過程,查看刪除進度,請參見查看索引

重要

刪除索引會導致查詢性能下降,請謹慎操作。

語法

-- 語法1
DROP INDEX <index_name> ON <table_name>;
-- 語法2
ALTER TABLE <table_name> DROP INDEX <index_name>;

示例

DROP INDEX index_userId ON user_tb;
ALTER TABLE user_tb DROP INDEX index_city;

使用倒排索引

全文檢索

語法

SELECT * FROM <table_name> WHERE <column_name> <conditional_logic> '<keywords>';

參數(shù)說明

參數(shù)

是否必填

描述

table_name

目標表名。

column_name

目標列名。

conditional_logic

匹配邏輯:由全文檢索關鍵字和邏輯關鍵字自由組合而成。

邏輯關鍵字:AND、OR、NOT

全文檢索關鍵字:

  • MATCH_ALL:同時匹配多個關鍵字。

  • MATCH_ANY:匹配任意一個關鍵字。

  • MATCH_PHRASE:匹配短語詞組。

keywords

目標關鍵詞。

有多個關鍵詞時,需要用空格分隔。

示例:keyword1 keyword2 keyword3

示例

-- 檢索log_tb表中,logmsg字段包含keyword1的所有行。
SELECT * FROM log_tb WHERE logmsg MATCH_ANY 'keyword1';

-- 檢索log_tb表中,logmsg字段包含keyword1或者keyword2的所有行。
SELECT * FROM log_tb WHERE logmsg MATCH_ANY 'keyword1 keyword2';

-- 檢索log_tb表中,logmsg字段同時包含keyword1和keyword2的所有行。
SELECT * FROM log_tb WHERE logmsg MATCH_ALL 'keyword1 keyword2';

-- 檢索log_tb表中,logmsg字段同時包含keyword1和keyword2的所有行,并且按照keyword1在前,keyword2在后的順序。
SELECT * FROM log_tb WHERE logmsg MATCH_PHRASE 'keyword1 keyword2';

普通數(shù)值和日期類型的等值或范圍查詢

此種場景下,查詢語法與標準查詢SQL語法并無差異。

示例

-- 普通等值、范圍、IN、NOT IN
SELECT * FROM user_tb WHERE id = 123;
SELECT * FROM user_tb WHERE ts > '2023-01-01 00:00:00';
SELECT * FROM user_tb WHERE op_type IN ('add', 'delete');

查詢性能對比

使用hackernews100萬條數(shù)據(jù),驗證使用倒排索引與無倒排索引的查詢的性能對比。

環(huán)境準備

步驟一:創(chuàng)建目標表。

  1. 創(chuàng)建數(shù)據(jù)庫。

    CREATE DATABASE test_inverted_index;
  2. 切換到創(chuàng)建的數(shù)據(jù)庫。

    USE test_inverted_index;
  3. 創(chuàng)建目標表。

    CREATE TABLE hackernews_1m
    (
        `id` BIGINT,
        `deleted` TINYINT,
        `type` String,
        `author` String,
        `timestamp` DateTimeV2,
        `comment` String,
        `dead` TINYINT,
        `parent` BIGINT,
        `poll` BIGINT,
        `children` Array<BIGINT>,
        `url` String,
        `score` INT,
        `title` String,
        `parts` Array<INT>,
        `descendants` INT,
        INDEX idx_comment (`comment`) USING INVERTED PROPERTIES("parser" = "english") COMMENT 'inverted index for comment'
    )
    DUPLICATE KEY(`id`)
    DISTRIBUTED BY HASH(`id`) BUCKETS 10;
    --   創(chuàng)建表的同時創(chuàng)建了comment的倒排索引idx_comment
    --   USING INVERTED 指定索引類型是倒排索引
    --   PROPERTIES("parser" = "english") 指定采用english分詞,還支持"chinese"中文分詞和"unicode"中英文多語言混合分詞,如果不指定"parser"參數(shù)表示不分詞

步驟二:導入數(shù)據(jù)

將數(shù)據(jù)導入目標表中。

  1. 下載數(shù)據(jù)文件。

    wget https://qa-build.oss-cn-beijing.aliyuncs.com/regression/index/hacknernews_1m.csv.gz
  2. 通過Stream Load導入數(shù)據(jù)。

    您可以在云數(shù)據(jù)庫 SelectDB 版的實例詳情頁面查看云數(shù)據(jù)庫 SelectDB 版實例的連接地址host和端口號port。更多Stream Load詳情,請參見Stream Load

    curl --location-trusted -u root: -H "compress_type:gz" -T hacknernews_1m.csv.gz  http://<host>:<port>/api/test_inverted_index/hackernews_1m/_stream_load
    {
        "TxnId": 2,
        "Label": "a8a3e802-2329-49e8-912b-04c800a461a6",
        "TwoPhaseCommit": "false",
        "Status": "Success",
        "Message": "OK",
        "NumberTotalRows": 1000000,
        "NumberLoadedRows": 1000000,
        "NumberFilteredRows": 0,
        "NumberUnselectedRows": 0,
        "LoadBytes": 130618406,
        "LoadTimeMs": 8988,
        "BeginTxnTimeMs": 23,
        "StreamLoadPutTimeMs": 113,
        "ReadDataTimeMs": 4788,
        "WriteDataTimeMs": 8811,
        "CommitAndPublishTimeMs": 38
    }
  3. 執(zhí)行SQLcount()確認導入數(shù)據(jù)是否成功。

    SELECT count() FROM hackernews_1m;
    +---------+
    | count() |
    +---------+
    | 1000000 |
    +---------+
    1 row in set (0.02 sec)

性能對比

說明
  • 使用進行分詞的倒排索引與未創(chuàng)建倒排索引統(tǒng)計結果有差異。因為倒排索引對目標列分詞后,還會對詞進行統(tǒng)一成小寫等歸一化處理,因此使用倒排索引查詢統(tǒng)計的結果會多一點。

  • 有些示例性能差異不明顯,是因為數(shù)據(jù)集太小。數(shù)據(jù)集越大,性能差異越大。

全文檢索
  • 統(tǒng)計comment列中含有OLAP的行數(shù)。

    • 基于LIKE統(tǒng)計comment列中含有OLAP的行數(shù),耗時0.18s。

      SELECT count() FROM hackernews_1m WHERE comment LIKE '%OLAP%';
      +---------+
      | count() |
      +---------+
      |      34 |
      +---------+
      1 row in set (0.18 sec)
    • 基于倒排索引的全文檢索MATCH_ANY統(tǒng)計comment列中含有OLAP的行數(shù),耗時0.02s。比基于LIKE統(tǒng)計的速度提高了9倍。

      SELECT count() FROM hackernews_1m WHERE comment MATCH_ANY 'OLAP';
      +---------+
      | count() |
      +---------+
      |      35 |
      +---------+
      1 row in set (0.02 sec)
  • 統(tǒng)計comment列中含有OLTP的行數(shù)。

    • 基于LIKE統(tǒng)計comment列中含有OLTP的行數(shù),耗時0.07s。

      SELECT count() FROM hackernews_1m WHERE comment LIKE '%OLTP%';
      +---------+
      | count() |
      +---------+
      |      48 |
      +---------+
      1 row in set (0.07 sec)
    • 基于倒排索引的全文檢索MATCH_ANY統(tǒng)計comment列中含有OLTP的行數(shù),耗時0.01s。比基于LIKE統(tǒng)計的速度提高了7倍。

      SELECT count() FROM hackernews_1m WHERE comment MATCH_ANY 'OLTP';
      +---------+
      | count() |
      +---------+
      |      51 |
      +---------+
      1 row in set (0.01 sec)
  • 統(tǒng)計comment列中同時含有OLAPOLTP兩個詞的行數(shù)。

    • 基于LIKE統(tǒng)計,耗時0.13s。

      SELECT count() FROM hackernews_1m WHERE comment LIKE '%OLAP%' AND comment LIKE '%OLTP%';
      +---------+
      | count() |
      +---------+
      |      14 |
      +---------+
      1 row in set (0.13 sec)
    • 基于倒排索引的全文檢索MATCH_ALL統(tǒng)計,耗時0.01s。比基于LIKE統(tǒng)計的速度提高了12倍。

       SELECT count() FROM hackernews_1m WHERE comment MATCH_ALL 'OLAP OLTP';
      +---------+
      | count() |
      +---------+
      |      15 |
      +---------+
      1 row in set (0.01 sec)
  • 統(tǒng)計comment列中含有OLAPOLTP的行數(shù)。

    • 基于LIKE查詢統(tǒng)計,耗時0.12s。

      SELECT count() FROM hackernews_1m WHERE comment LIKE '%OLAP%' OR comment LIKE '%OLTP%';
      +---------+
      | count() |
      +---------+
      |      68 |
      +---------+
      1 row in set (0.12 sec)
    • 基于全文檢索統(tǒng)計,耗時0.01s,比基于LIKE查詢統(tǒng)計,速度提高了12倍。

      SELECT count() FROM hackernews_1m WHERE comment MATCH_ANY 'OLAP OLTP';
      +---------+
      | count() |
      +---------+
      |      71 |
      +---------+
      1 row in set (0.01 sec)

普通等值、范圍查詢

  • DataTime類型的列范圍查詢性能對比。

    1. 未創(chuàng)建倒排索引前,統(tǒng)計timestamp列大于2007-08-23 04:17:00的數(shù)據(jù)。耗時0.03s。

       SELECT count() FROM hackernews_1m WHERE timestamp > '2007-08-23 04:17:00';
      +---------+
      | count() |
      +---------+
      |  999081 |
      +---------+
      1 row in set (0.03 sec)
    2. 為timestamp列增加一個倒排索引。

      CREATE INDEX idx_timestamp ON hackernews_1m(timestamp) USING INVERTED;
      Query OK, 0 rows affected (0.03 sec)
    3. 查看索引創(chuàng)建進度,通過FinishTime和CreateTime的差值,可以看到100萬條數(shù)據(jù)對timestamp列建倒排索引只用了1s。

      SHOW ALTER TABLE COLUMN;
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      | JobId | TableName     | CreateTime              | FinishTime              | IndexName     | IndexId | OriginIndexId | SchemaVersion | TransactionId | State    | Msg  | Progress | Timeout |
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      | 10030 | hackernews_1m | 2023-02-10 19:44:12.929 | 2023-02-10 19:44:13.938 | hackernews_1m | 10031   | 10008         | 1:1994690496  | 3             | FINISHED |      | NULL     | 2592000 |
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      1 row in set (0.00 sec)
    4. 索引創(chuàng)建完成后,使用同一條查詢語句,統(tǒng)計timestamp列大于2007-08-23 04:17:00的數(shù)據(jù),耗時0.01s。比未創(chuàng)建倒排索引前的查詢速度提高了2秒。

      SELECT count() FROM hackernews_1m WHERE timestamp > '2007-08-23 04:17:00';
      +---------+
      | count() |
      +---------+
      |  999081 |
      +---------+
      1 row in set (0.01 sec)
  • 數(shù)值類型等值查詢的性能對比。

    1. 未創(chuàng)建倒排索引前,統(tǒng)計數(shù)值列parent等于11189的數(shù)據(jù)。

      SELECT count() FROM hackernews_1m WHERE parent = 11189;
      +---------+
      | count() |
      +---------+
      |       2 |
      +---------+
      1 row in set (0.01 sec)
    2. 為數(shù)值列parent創(chuàng)建不進行分詞的倒排索引。

      -- 對于數(shù)值類型USING INVERTED,不用指定分詞
      -- ALTER TABLE t ADD INDEX 是第二種建索引的語法
      ALTER TABLE hackernews_1m ADD INDEX idx_parent(parent) USING INVERTED;
      Query OK, 0 rows affected (0.01 sec)
    3. 查看創(chuàng)建索引進度。

      SHOW ALTER TABLE COLUMN;
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      | JobId | TableName     | CreateTime              | FinishTime              | IndexName     | IndexId | OriginIndexId | SchemaVersion | TransactionId | State    | Msg  | Progress | Timeout |
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      | 10030 | hackernews_1m | 2023-02-10 19:44:12.929 | 2023-02-10 19:44:13.938 | hackernews_1m | 10031   | 10008         | 1:1994690496  | 3             | FINISHED |      | NULL     | 2592000 |
      | 10053 | hackernews_1m | 2023-02-10 19:49:32.893 | 2023-02-10 19:49:33.982 | hackernews_1m | 10054   | 10008         | 1:378856428   | 4             | FINISHED |      | NULL     | 2592000 |
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
    4. 索引創(chuàng)建完成后,使用同一條查詢語句,統(tǒng)計數(shù)值列parent等于11189的數(shù)據(jù)。

      SELECT count() FROM hackernews_1m WHERE parent = 11189;
      +---------+
      | count() |
      +---------+
      |       2 |
      +---------+
      1 row in set (0.01 sec)
  • 字符串類型等值查詢的性能對比。

    1. 未創(chuàng)建倒排索引前,統(tǒng)計字符串列author等于faster的數(shù)據(jù),耗時0.03s。

      SELECT count() FROM hackernews_1m WHERE author = 'faster';
      +---------+
      | count() |
      +---------+
      |      20 |
      +---------+
      1 row in set (0.03 sec)
    2. 為字符串列author建不進行分詞的倒排索引。

      -- 這里只用了USING INVERTED,不對author分詞,整個當做一個詞處理
      ALTER TABLE hackernews_1m ADD INDEX idx_author(author) USING INVERTED;
      Query OK, 0 rows affected (0.01 sec)
    3. 查看創(chuàng)建索引進度。

      -- 100萬條author數(shù)據(jù)增量建索引僅消耗1.5s
      SHOW ALTER TABLE COLUMN;
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      | JobId | TableName     | CreateTime              | FinishTime              | IndexName     | IndexId | OriginIndexId | SchemaVersion | TransactionId | State    | Msg  | Progress | Timeout |
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      | 10030 | hackernews_1m | 2023-02-10 19:44:12.929 | 2023-02-10 19:44:13.938 | hackernews_1m | 10031   | 10008         | 1:1994690496  | 3             | FINISHED |      | NULL     | 2592000 |
      | 10053 | hackernews_1m | 2023-02-10 19:49:32.893 | 2023-02-10 19:49:33.982 | hackernews_1m | 10054   | 10008         | 1:378856428   | 4             | FINISHED |      | NULL     | 2592000 |
      | 10076 | hackernews_1m | 2023-02-10 19:54:20.046 | 2023-02-10 19:54:21.521 | hackernews_1m | 10077   | 10008         | 1:1335127701  | 5             | FINISHED |      | NULL     | 2592000 |
      +-------+---------------+-------------------------+-------------------------+---------------+---------+---------------+---------------+---------------+----------+------+----------+---------+
      
    4. 索引創(chuàng)建完成后,使用同一條查詢語句,統(tǒng)計字符串列author等于faster的數(shù)據(jù),耗時0.01s。比未創(chuàng)建倒排索引前的查詢速度提高了2秒。

      -- 創(chuàng)建索引后,字符串等值匹配也有明顯加速
      SELECT count() FROM hackernews_1m WHERE author = 'faster';
      +---------+
      | count() |
      +---------+
      |      20 |
      +---------+
      1 row in set (0.01 sec)