ppgjx 发表于 2022-8-13 13:45

这种mysql表如何去加索引?

现在有个场景 一个用户对应多个商品 这个商品是有次数的 我是这样的设计表的

用户id   商品id       剩余次数
user_id goods_id count
小明id      篮球id   剩余1次
小明id      足球id   剩余2次
小王id   篮球id   剩余1次
小王id      足球id   剩余2次

像这种一个用户id对应多个商品 我现在像查询 小明的篮球id 就必须 select * from 表明 where user_id = 小米 and goods_id= 足球id

这样好像是全表扫描吧 因为user_id和goods_id都是非唯一了 没办法加唯一索引把 有什么办法可以优化吗 或者表结构该怎么改改

zhuyanxuan518 发表于 2022-8-13 14:01

组合索引呗,alter table xxx add index xxx(user_id, goods_id)

LEE721 发表于 2022-8-13 14:11

感觉分开会好一点吧,三范式,分成用户表,商品表,订单表

PncB2INYyoKw0l9 发表于 2022-8-13 14:16

select goos_id from 表名 where goos_id=篮球id group by user_id having user_id=小明id;

SeriousSnow 发表于 2022-8-13 20:54

分开建表。分开搜索。

misswell 发表于 2022-8-13 21:03

普通索引就行,没必要唯一索引

murongxu 发表于 2022-8-14 09:37

如果用户id和商品id不重复的话,可以尝试建立联合主键。
或者建立联合索引。
可以使用EXPLAIN分析sql文,当然这是表中的数据有关了
页: [1]
查看完整版本: 这种mysql表如何去加索引?