商品表中分类的查询问题

guosheng1987 2012-02-06 08:16:17


假设分类1是鞋子,分类2是运动鞋,分类三是篮球鞋

查询所有分类为鞋的商品的语句是这样的。

select * from goods where goods_id in(1,2,3)

当商品数据量过大的时候,查询效率是非常低下的,关于此,有没有好一点的解决方案?



...全文
189 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
一起混吧 2012-02-06
  • 打赏
  • 举报
回复
如果你为cat_id建立索引。可能union all要快点。否则用or或者in.

你自己可以测试测试便知道。
guosheng1987 2012-02-06
  • 打赏
  • 举报
回复
期待其他解决方案
黄袍披身 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 guosheng1987 的回复:]

10万商品 吧 ,不多吧,cat_id为分类id
[/Quote]

10萬商品 那麼你的cat_id 有多少個?總不可能分到幾萬個吧?學一下淘寶的分類方法吧
細分成幾個大的類別 再細分下去 然後再根據分類查詢最後一個小分類。 所以in是足夠你用的了,關鍵是看你怎麼劃分你的數據表.
guosheng1987 2012-02-06
  • 打赏
  • 举报
回复
10万商品 吧 ,不多吧,cat_id为分类id
黄袍披身 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 guosheng1987 的回复:]

select * from goods where cat_id in(1,2,3,4,5,6,7,8,9...50) 数据表中有100万商品的时候,这样的查询效率还高吗,或者更多
[/Quote]

cat id 是什麼?分類id 你的分類id 有100萬?
guosheng1987 2012-02-06
  • 打赏
  • 举报
回复
select * from goods where cat_id in(1,2,3,4,5,6,7,8,9...50) 数据表中有100万商品的时候,这样的查询效率还高吗,或者更多
guosheng1987 2012-02-06
  • 打赏
  • 举报
回复
不好意思 我写错了
select * from goods where cat_id in(1,2,3)
黄袍披身 2012-02-06
  • 打赏
  • 举报
回复
你測試過嗎?你的數據量過大是多大?
我做過實際的測試 mysql 的 in 效率非常之高,幾乎沒有什麼影響
guosheng1987 2012-02-06
  • 打赏
  • 举报
回复
比如说,我鞋子下面有50个分类怎么办
guosheng1987 2012-02-06
  • 打赏
  • 举报
回复
楼上思路不错,不过答非所问
一起混吧 2012-02-06
  • 打赏
  • 举报
回复
select * from goods where goods_id=1
union all
select * from goods where goods_id=2
union all
select * from goods where goods_id=3

这样试试。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧