本帖最后由 chongan_wang 于 2009-10-08 01:12:43 编辑

解决方案 »

  1.   

    另外建一个表:(gid,bgid,state) 
    gid,bgid作为联合主键,gid同时作为goods表id的外键,bgid作为bestgoods表id的外键,
    bestgoods表的goodsid可以去掉。
      

  2.   

    两种思路。一: 把 BestGoods 表中的 state 字段取消,因为它和 Goods 表中的形成了冗余。可以通过 select * from BestGoods , Goods  where ,goodsId=goods.id 来实现。 因为有goods主键索引,效率不会差得太多。二:按二楼的建议,在GOODS表上使用触发器。还有一种就是你自己提出的。  "请不要告诉我直接在goods表里加个“是否属于推荐商品”之类的字段的办法" ,然后在这个 "是否属于推荐商品”之类的字段" 加上索引。这样也不会出现 "搜这1000万数据取这100条吧"
      

  3.   

     BestGoods 表中的 state 字段
    确实没什么意思 只能增加数据量 查询的时候给state加上索引查goods表就ok了