昨天在测试线上的环境时,发现创建索引后,索引不生效。 admin dll jobs 里面显示已经是public了。
你好
- 请提供下 tidb 版本
- 上传下脱敏表结构,
版本:TiDB4.0
表结构:
CREATE TABLE biz_flow_detail
(
ipaddress
varchar(32) DEFAULT NULL,
cdeluid
varchar(32) DEFAULT NULL,
bdp_uuid
varchar(128) DEFAULT NULL,
device
varchar(32) DEFAULT NULL,
refer
int(11) DEFAULT NULL,
areaid
int(11) DEFAULT NULL,
register_type
int(11) DEFAULT NULL,
user_type
int(11) DEFAULT NULL,
c1
varchar(32) DEFAULT NULL,
c2
varchar(32) DEFAULT NULL,
c3
varchar(32) DEFAULT NULL,
c4
varchar(32) DEFAULT NULL,
c5
varchar(32) DEFAULT NULL,
dn2
varchar(32) DEFAULT NULL,
dt
int(11) DEFAULT NULL,
dn
varchar(32) DEFAULT NULL,
KEY dn
(dn
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin/*!90000 SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=2 */
辛苦执行下下面 explain 语句,并上传下结果,对比下执行计划。
explain select * from biz_flow_detail use index(dn) where dn = 'acc'
SHOW STATS_HEALTHY where db_name = ‘cdelyunqi’ and table_name = 'biz_flow_detail ';
你好
目前存错引擎使用的都是 tikv ,所以和 tiflash 貌似没什么必然的联系。
请问 dn=‘acc’ 筛选度是否很高,譬如 30w 行记录中只有几个该值,还是像 男女字段一样,占有率超过一半?(此表述只是为了表示该字段的筛选度是否很高。)
explain 的时间来看 table full scan 的时间看起来更短一些。
你好
acc 在 dn 列的 count 8491026 ,占比已经超过 50%,优化器在选择是可能会出现全表扫,也是可以理解的。
建议将索引建立在区分度较高的列上,这样对查询的加速效果会更加明显。
你好,
此问题与本主题相关性不大,建议开新帖我们一起讨论下,
- 可以将此楼整理一下
- 并上传下 tiflash.log 看下其中是否有报错
- 上传下 display 看下 tiflash 的状态。
PS:information_schema.tiflash_replica 表仅表示一个过去时,曾经同步过该表到 tiflash
感谢配合
收到,谢谢!
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。