这种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都是非唯一了 没办法加唯一索引把 有什么办法可以优化吗 或者表结构该怎么改改 组合索引呗,alter table xxx add index xxx(user_id, goods_id) 感觉分开会好一点吧,三范式,分成用户表,商品表,订单表 select goos_id from 表名 where goos_id=篮球id group by user_id having user_id=小明id; 分开建表。分开搜索。 普通索引就行,没必要唯一索引 如果用户id和商品id不重复的话,可以尝试建立联合主键。
或者建立联合索引。
可以使用EXPLAIN分析sql文,当然这是表中的数据有关了
页:
[1]