正常的条件查询比mysql慢

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:3.0.0GA
  • 【问题描述】:表数据量124w mysql执行<20ms tidb执行200ms+ 执行analyze table收集统计信息后执行计划未改变,tidb与mysql表结构以及数据一致(通过dm实时同步) sql:select order_id, sales_staff_id ,sales_staff_name ,sales_dept_path ,parent_order_id ,parent_order_spu_id from tracking_member_info where status=1 and payment_time >= unix_timestamp(‘2019-10-20’) and order_status = 1 order by created_time desc limit 10;

mysql的执行计划

tidb执行计划

索引信息 UNIQUE KEY order_sn (order_sn), KEY customer_id (customer_id), KEY order_status (order_status,status), KEY idx_location_path (location_path), KEY idx_price (price), KEY idx_payment_time (payment_time), KEY idx_created_time (created_time), KEY idx_consume_type (consume_type), KEY idx_progress (progress)

Hi,执行计划不太好看,可以不加/G嘛,再发一次嘛,初看索引走的一样

看索引是与Mysql 索引选择 create_time 一致,但是你查询条件不一样吧?mysql limit 0,10, tidb limit 10

Mysql 单机有读缓存网络开销低 TiDB 分布式网络交互也比较多,可能相对响应相对较高,请问下你这边预期是啥? 如果想看下是否有比较快得执行计划,你可以尝试对下已有索引哪个比较好,或者联合索引创建下看

tidb在20ms以内的反馈查询结果的sql也不少啊,瓶颈肯定不在网络交互,我这边预期至少在50ms以下吧

那你可以尝试对已有索引看哪个比较选择性好,可以使用 use index hint 测试,或者联合索引创建下看