mysql - 优化大 `IN` SQL

标签 mysql sql sql-optimization

我有一个这么大的 SQL:

SELECT id,kdt_id,kdt_goods_id,fx_price,min_retail_price,max_retail_price,
fx_count,stock_num,sold_num,recommend_level,is_display,is_delete,
quit_time,review_status,fx_auth,level_discount_auth,is_fx_delete,
sold_status 
FROM apple_goods 
WHERE 1 and `kdt_goods_id` in (
    '44089839','44089839','44089839','44089839','44089839',
    '44089839','44089839','44089839','44089839','44089839',
    '44089839','44089839','44089839','44089839','44089839',
    '44089839','44089839','44089839','44089839','44089839',
    '44089839','44089839','44089839','44089839','44089839',
    '96611525','96611525','96611525','96611525','96611525',
    '96611525','96611525','96611525','96611525','96611525',
    '96611525','96611525','96611525','96611525','96611525',
    '96611525','96611525','96611525','96611525','96611525',
    '96611525','96611525','96611525','96611525','96611525',
    '96611525','96611525','96611525','96611525','142061451',
    '142061451','142061451','142061451','142061451','142061451',
    '142061451','142061451','142061451','142061451','142061451',
    '142061451','142061451','142061451','142061451','142061451',
    '142061451','142061451','142061451','142801551','142801551',
    '142801551','142801551','142801551','142801551','142801551',
    '142801551','142801551','142801551','142801551','142801551',
    '142801551','142801551','142801551','142801551','142801551',
    '142801551','142801551','142801551','142801551','142801551',
    '143381529','143381529','143381529','143381529','143381529',
    '143381529','147713054','147713054','147713054','147713054',
    '147713054','147713054','147713054','148164398','148164398',
    '148164398','148164398','148164398','148164398','148164398',
    '148164398','148164398','148164398','148164398','148296160',
    '148296160','148296160','148296160','148296160','148296160',
    '151063722','151063722','151063722','151063722','151063722',
    '151063722','151063722','151063722','151063722','151063722',
    '151063722','151063722','151063722','151063722','151063722',
    '151063722','151063722','151063722','151063722','151063722',
    '151063722','153933372','153933372','153933372','153933372',
    '153933372','153933372','154447237','154447237','154447237',
    '154447237','154447237','154447237','154447237','158137781',
    '158137781','158137781','158137781','158137781','158137781',
    '158217358','158217358','158217358','158217358','158217358',
    '158217358','158217358','158217358','158217358','158217358',
    '158217358','158217358','158217358','158246547','158246547',
    '158246547','158246547','158246547','158246547','158246547',
    '158246547','158246547','158246547','158246547','158246547',
    '158246547','158246547','158246547','158246547','158246547',
    '158246547','158246547','158246547','158246547','160734561',
    '160734561','160734561','160734561','160734561','160734561',
    '162435844','162435844','162435844','162435844','162435844',
    '162435844','162435844','162435844','162435844','162435844',
    '162435844','162435844','162435844','163784258','163784258',
    '163784258','163784258','163784258','163784258','163784258',
    '163784258','163784258','163784258','163784258','163784258',
    '163784258','163784258','163784258','163784258','163784258',
    '163784258','163784258','163800813','163800813','163800813',
    '163800813','163800813','163800813','163800813','163800813',
    '163800813','163800813','163800813','163803246','163803246',
    '163803246','163803246','163803246','163803246','164617535',
    '164617535','164617535','164617535','164617535','164617535',
    '164617535','164617535','164617535','164617535','164617535',
    '164617535','164617535','164617535','164617535','164617535',
    '164617535','164617535','164617535','164617535','164617535')

如何优化?

解释:

```
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: apple_goods
         type: range
possible_keys: kdt_goods_id
          key: kdt_goods_id
      key_len: 4
          ref: NULL
         rows: 20
        Extra: Using index condition
1 row in set (0.00 sec)

```

最佳答案

我已经从您的 IN 中删除了重复项,可能会针对创建临时表进行基准测试。

SELECT id,kdt_id,kdt_goods_id,fx_price,min_retail_price,max_retail_price,
fx_count,stock_num,sold_num,recommend_level,is_display,is_delete,
quit_time,review_status,fx_auth,level_discount_auth,is_fx_delete,
sold_status 
FROM apple_goods 
WHERE 1 and `kdt_goods_id` in
('96611525',
'44089839',
'164617535',
'163803246',
'163800813',
'163784258',
'162435844',
'160734561',
'158246547',
'158217358',
'158137781',
'154447237',
'153933372',
'151063722',
'148296160',
'148164398',
'147713054',
'143381529',
'142801551',
'142061451')

关于mysql - 优化大 `IN` SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385824/

相关文章:

mysql - 将 IN 子查询重写为 JOIN

php - mysql查询优化——索引

mysql - mysql中where条件多的sql是否比mysql中条件少的sql快?

php - 将数据库中的日期存储在数组中

MYSQL:SQL借记/贷记

php - 另一个表格提交问题

c# - 数据表/数据行如果存在则更新否则插入

mysql - 如何删除两个表中的共同记录?

php - mysql分页结果

c# - 超时异常导致SqlDataReader关闭?