【 TiDB 使用环境】生产环境
【概述】 场景 + 问题概述
tidb v4.0.9中有两张表进行join,两张表的大小分别为30w(trade_retail_bill)和70w(trade_retail_bill_line),在做join的时候总是大表被作为驱动 表,通过straight_join没有边改顺序,通过INL_join(trade_retail_bill)暗示后改变了join的顺序,但是返回的值却是以大表做为基准的。
=====原始执行计划
===通过straight_join
==添加hints之后的执行计划
【问题】 当前遇到的问题
【业务影响】 两个表join,返回的数据都是以大表作为驱动表返回的数据,数据量很大
【TiDB 版本】 V4.0.9
查看了两张表的健康状态,一个是99,一个是97,感觉还可以呀。
==表结构
CREATE TABLE trade_retail_bill
(
id
bigint(20) NOT NULL,
bill_no
varchar(32) COLLATE utf8_general_ci DEFAULT NULL ,
bill_status
varchar(2) COLLATE utf8_general_ci DEFAULT NULL,
****
PRIMARY KEY (id
),
UNIQUE KEY bill_no
(bill_no
),
KEY idx_retail_bill_no
(bill_no
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
CREATE TABLE trade_retail_bill_line
(
id
bigint(20) NOT NULL,
bill_id
bigint(20) DEFAULT NULL ,
*****
PRIMARY KEY (id
),
KEY idx_retail_line_sku_id
(sku_id
),
KEY idx_retail_line_goods_id
(goods_id
),
KEY idx_retail_line_bill_id
(bill_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
==查询语句
SELECT *****
FROM
“trade_retail_bill” “trade_retail_bill”,
“trade_retail_bill_line” “trade_retail_bill_line”
WHERE
“trade_retail_bill”.“bill_status” IN (‘05’)
AND (
“trade_retail_bill”.“id” = “trade_retail_bill_line”.“bill_id”
);
h5n1
(H5n1)
2022 年10 月 8 日 07:39
8
new_collations_enabled_on_first_bootstrap 这个参数设置的啥
h5n1
(H5n1)
2022 年10 月 8 日 09:29
10
我看那个bug指的好像是text类型的,当时我的关联键是bigint类型。