云数据库 GaussDB-Plan Hint调优概述:示例

时间:2025-02-12 15:08:04

示例

创建示例表和索引:

create table t1(c1 int, c2 int, c3 int);create table t2(c1 int, c2 int, c3 int);create table t3(c1 int, c2 int, c3 int);create index it1 on t1(c1,c2);create index it2 on t2(c1,c2);create index it3 on t1(c3,c2);-- 下面TPCH数据表需要插入10X数据量已匹配给出的计划示例create table store(    s_store_sk                integer               not null,    s_store_id                char(16)              not null,    s_rec_start_date          date                          ,    s_rec_end_date            date                          ,    s_closed_date_sk          integer                       ,    s_store_name              varchar(50)                   ,    s_number_employees        integer                       ,    s_floor_space             integer                       ,    s_hours                   char(20)                      ,    s_manager                 varchar(40)                   ,    s_market_id               integer                       ,    s_geography_class         varchar(100)                  ,    s_market_desc             varchar(100)                  ,    s_market_manager          varchar(40)                   ,    s_division_id             integer                       ,    s_division_name           varchar(50)                   ,    s_company_id              integer                       ,    s_company_name            varchar(50)                   ,    s_street_number           varchar(10)                   ,    s_street_name             varchar(60)                   ,    s_street_type             char(15)                      ,    s_suite_number            char(10)                      ,    s_city                    varchar(60)                   ,    s_county                  varchar(30)                   ,    s_state                   char(2)                       ,    s_zip                     char(10)                      ,    s_country                 varchar(20)                   ,    s_gmt_offset              decimal(5,2)                  ,    s_tax_precentage          decimal(5,2)                  ,    primary key (s_store_sk));create table store_sales(    ss_sold_date_sk           integer                       ,    ss_sold_time_sk           integer                       ,    ss_item_sk                integer               not null,    ss_customer_sk            integer                       ,    ss_cdemo_sk               integer                       ,    ss_hdemo_sk               integer                       ,    ss_addr_sk                integer                       ,    ss_store_sk               integer                       ,    ss_promo_sk               integer                       ,    ss_ticket_number          integer               not null,    ss_quantity               integer                       ,    ss_wholesale_cost         decimal(7,2)                  ,    ss_list_price             decimal(7,2)                  ,    ss_sales_price            decimal(7,2)                  ,    ss_ext_discount_amt       decimal(7,2)                  ,    ss_ext_sales_price        decimal(7,2)                  ,    ss_ext_wholesale_cost     decimal(7,2)                  ,    ss_ext_list_price         decimal(7,2)                  ,    ss_ext_tax                decimal(7,2)                  ,    ss_coupon_amt             decimal(7,2)                  ,    ss_net_paid               decimal(7,2)                  ,    ss_net_paid_inc_tax       decimal(7,2)                  ,    ss_net_profit             decimal(7,2)                  ,    primary key (ss_item_sk, ss_ticket_number));create table store_returns(    sr_returned_date_sk       integer                       ,    sr_return_time_sk         integer                       ,    sr_item_sk                integer               not null,    sr_customer_sk            integer                       ,    sr_cdemo_sk               integer                       ,    sr_hdemo_sk               integer                       ,    sr_addr_sk                integer                       ,    sr_store_sk               integer                       ,    sr_reason_sk              integer                       ,    sr_ticket_number          integer               not null,    sr_return_quantity        integer                       ,    sr_return_amt             decimal(7,2)                  ,    sr_return_tax             decimal(7,2)                  ,    sr_return_amt_inc_tax     decimal(7,2)                  ,    sr_fee                    decimal(7,2)                  ,    sr_return_ship_cost       decimal(7,2)                  ,    sr_refunded_cash          decimal(7,2)                  ,    sr_reversed_charge        decimal(7,2)                  ,    sr_store_credit           decimal(7,2)                  ,    sr_net_loss               decimal(7,2)                  ,    primary key (sr_item_sk, sr_ticket_number));create table customer(    c_customer_sk             integer               not null,    c_customer_id             char(16)              not null,    c_current_cdemo_sk        integer                       ,    c_current_hdemo_sk        integer                       ,    c_current_addr_sk         integer                       ,    c_first_shipto_date_sk    integer                       ,    c_first_sales_date_sk     integer                       ,    c_salutation              char(10)                      ,    c_first_name              char(20)                      ,    c_last_name               char(30)                      ,    c_preferred_cust_flag     char(1)                       ,    c_birth_day               integer                       ,    c_birth_month             integer                       ,    c_birth_year              integer                       ,    c_birth_country           varchar(20)                   ,    c_login                   char(13)                      ,    c_email_address           char(50)                      ,    c_last_review_date        char(10)                      ,    primary key (c_customer_sk));create table promotion(    p_promo_sk                integer               not null,    p_promo_id                char(16)              not null,    p_start_date_sk           integer                       ,    p_end_date_sk             integer                       ,    p_item_sk                 integer                       ,    p_cost                    decimal(15,2)                 ,    p_response_target         integer                       ,    p_promo_name              char(50)                      ,    p_channel_dmail           char(1)                       ,    p_channel_email           char(1)                       ,    p_channel_catalog         char(1)                       ,    p_channel_tv              char(1)                       ,    p_channel_radio           char(1)                       ,    p_channel_press           char(1)                       ,    p_channel_event           char(1)                       ,    p_channel_demo            char(1)                       ,    p_channel_details         varchar(100)                  ,    p_purpose                 char(15)                      ,    p_discount_active         char(1)                       ,    primary key (p_promo_sk));create table customer_address(    ca_address_sk             integer               not null,    ca_address_id             char(16)              not null,    ca_street_number          char(10)                      ,    ca_street_name            varchar(60)                   ,    ca_street_type            char(15)                      ,    ca_suite_number           char(10)                      ,    ca_city                   varchar(60)                   ,    ca_county                 varchar(30)                   ,    ca_state                  char(2)                       ,    ca_zip                    char(10)                      ,    ca_country                varchar(20)                   ,    ca_gmt_offset             decimal(5,2)                  ,    ca_location_type          char(20)                      ,    primary key (ca_address_sk));create table item(    i_item_sk                 integer               not null,    i_item_id                 char(16)              not null,    i_rec_start_date          date                          ,    i_rec_end_date            date                          ,    i_item_desc               varchar(200)                  ,    i_current_price           decimal(7,2)                  ,    i_wholesale_cost          decimal(7,2)                  ,    i_brand_id                integer                       ,    i_brand                   char(50)                      ,    i_class_id                integer                       ,    i_class                   char(50)                      ,    i_category_id             integer                       ,    i_category                char(50)                      ,    i_manufact_id             integer                       ,    i_manufact                char(50)                      ,    i_size                    char(20)                      ,    i_formulation             char(20)                      ,    i_color                   char(20)                      ,    i_units                   char(10)                      ,    i_container               char(10)                      ,    i_manager_id              integer                       ,    i_product_name            char(50)                      ,    primary key (i_item_sk));

本章节大部分示例使用下述语句,便于Plan Hint支持的各方法作对比,示例语句及不带hint的原计划如下所示:

support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0272.html