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

通過搜索索引查詢寬表數據

本文介紹如何在多種查詢場景下通過搜索索引查詢Lindorm寬表數據,包括多維查詢、排序翻頁、分詞查詢、模糊查詢和聚合分析。

前提條件

多維查詢

執行以下語句實現多維查詢。

  • 示例一

    SELECT * FROM search_table WHERE gender='M' AND city='杭州' OR city='北京';

    查詢結果如下:

    +---------+--------+-----+--------+--------------+------------------+------+
    | user_id |  name  | age | gender |   address    |      email       | city |
    +---------+--------+-----+--------+--------------+------------------+------+
    | 1       | 張先生 | 18  | M      | 北京市朝陽區 | a***@example.net | 北京 |
    +---------+--------+-----+--------+--------------+------------------+------+
  • 示例二

    SELECT * FROM search_table WHERE age > 30 AND city != '杭州';

    查詢結果如下:

    +---------+--------+-----+--------+--------------+------------------+------+
    | user_id |  name  | age | gender |   address    |      email       | city |
    +---------+--------+-----+--------+--------------+------------------+------+
    | 28      | 陳女士 | 36  | F      | 深圳市南山區 | a***@example.net | 深圳 |
    +---------+--------+-----+--------+--------------+------------------+------+

排序翻頁

  • 搜索索引支持任意列的排序,執行以下語句實現數據排序查詢。

    SELECT * FROM search_table  WHERE gender='M' ORDER BY age DESC;

    查詢結果如下:

    +---------+--------+-----+--------+--------------+------------------+------+
    | user_id |  name  | age | gender |   address    |      email       | city |
    +---------+--------+-----+--------+--------------+------------------+------+
    | 6       | 李先生 | 32  | M      | 杭州市余杭區 | a***@example.net | 杭州 |
    | 20      | 王先生 | 28  | M      | 杭州市濱江區 | a***@example.net | 杭州 |
    | 1       | 張先生 | 18  | M      | 北京市朝陽區 | a***@example.net | 北京 |
    +---------+--------+-----+--------+--------------+------------------+------+
  • 搜索索引支持通過limit或者offset方式進行數據翻頁,執行以下語句實現數據翻頁查詢。

    SELECT * FROM search_table WHERE gender='M' ORDER BY age DESC LIMIT 1,10;

    查詢結果如下:

    +---------+--------+-----+--------+--------------+------------------+------+
    | user_id |  name  | age | gender |   address    |      email       | city |
    +---------+--------+-----+--------+--------------+------------------+------+
    | 20      | 王先生 | 28  | M      | 杭州市濱江區 | a***@example.net | 杭州 |
    | 1       | 張先生 | 18  | M      | 北京市朝陽區 | a***@example.net | 北京 |
    +---------+--------+-----+--------+--------------+------------------+------+

分詞查詢

分詞查詢的列使用=查詢,示例如下:address列是分詞字段,執行以下語句查詢age的范圍在(10,50]并且address在余杭區的數據。

SELECT * FROM search_table WHERE age > 10 AND age <= 50 AND address='余杭區' ORDER BY user_id;

查詢結果如下:

+---------+--------+-----+--------+--------------+------------------+------+
| user_id |  name  | age | gender |   address    |      email       | city |
+---------+--------+-----+--------+--------------+------------------+------+
| 1       | 張先生 | 18  | M      | 北京市朝陽區 | a***@example.net | 北京 |
| 6       | 李先生 | 32  | M      | 杭州市余杭區 | a***@example.net | 杭州 |
| 20      | 王先生 | 28  | M      | 杭州市濱江區 | a***@example.net | 杭州 |
+---------+--------+-----+--------+--------------+------------------+------+

模糊查詢

執行以下語句查詢email列中包含example的數據。

SELECT * FROM search_table WHERE email LIKE '%example%' ORDER BY user_id;

查詢結果如下:

+---------+--------+-----+--------+--------------+------------------+------+
| user_id |  name  | age | gender |   address    |      email       | city |
+---------+--------+-----+--------+--------------+------------------+------+
| 1       | 張先生 | 18  | M      | 北京市朝陽區 | a***@example.net | 北京 |
| 6       | 李先生 | 32  | M      | 杭州市余杭區 | a***@example.net | 杭州 |
| 20      | 王先生 | 28  | M      | 杭州市濱江區 | a***@example.net | 杭州 |
| 28      | 陳女士 | 36  | F      | 深圳市南山區 | a***@example.net | 深圳 |
+---------+--------+-----+--------+--------------+------------------+------+
說明

模糊查詢的性能受限于表的數據量,推薦使用分詞查詢。

聚合分析

搜索索引支持常用的聚合函數,例如COUNT、SUM、AVG、MIN、MAX。同時,搜索索引也支持DISTINCT和GROUP BY功能。

  • 執行以下語句,查詢city杭州的數據的總數。

    SELECT COUNT(*) FROM search_table WHERE city='杭州';

    查詢結果如下:

    +----------+
    | EXPR$0   |
    +----------+
    | 2        |
    +----------+
  • 執行以下語句,實現數據統計去重查詢。

    SELECT distinct(age) FROM search_table WHERE gender='M';

    查詢結果如下:

    +---------------+
    | DISTINCT(age) |
    +---------------+
    | 18            |
    | 28            |
    | 32            |
    +---------------+
  • 執行以下語句,實現分組查詢。

    SELECT city,count(*) AS cnt FROM search_table WHERE gender='M' GROUP BY city ORDER BY cnt DESC;

    查詢結果如下:

    +------+-----+
    | city | cnt |
    +------+-----+
    | 杭州 | 2   |
    | 北京 | 1   |
    +------+-----+
說明

聚合查詢時,如果未指定WHERE條件,將無法命中搜索索引。此時可以在WHERE關鍵字前添加force index(search_index_name) 語句,強制使用搜索索引。更多說明,請參見SELECT語法

短語匹配查詢

執行以下語句,實現短語匹配查詢。

SELECT name,age,city,address FROM search_table WHERE age>1 AND age<100 AND address='"杭州"' ORDER BY user_id;

查詢結果如下:

+--------+-----+------+--------------+
|  name  | age | city |   address    |
+--------+-----+------+--------------+
| 李先生 | 32  | 杭州 | 杭州市余杭區 |
| 王先生 | 28  | 杭州 | 杭州市濱江區 |
+--------+-----+------+--------------+