[FAQ] 用户自定义变量,简单查询变慢

【问题澄清】

  • 在简单 sql 语句中使用自定义变量,查询变慢
set @gid=20892449;
MySQL [(none)]> select gid,feat_val,create_time
    -> from feature.user_hot_click_list_weekly a
    -> where gid = @gid \G
*************************** 1. row ***************************
        gid: 20892449
   feat_val: xxxxxx
create_time: 2020-06-14 18:31:10
1 row in set (3.97 sec)
-----------------------------------------------------------------------------
MySQL [(none)]> select gid,feat_val,create_time
    -> from feature.user_hot_click_list_weekly a
    -> where gid = 20892449 \G
*************************** 1. row ***************************
        gid: 20892449
   feat_val: xxxxxxx
create_time: 2020-06-14 18:31:10
1 row in set (0.00 sec)

【解决方案】

  • 去掉 @ 自定义变量部分。

【注意事项】

  • 目前 @ 自定义变量在 tidb 中无法使用 ponitget 优化,所以当简单查询中使用这种方式,可能会比较慢,explain 会走 tablefullscan。

【经典案例】

【相关链接】