实现的内容:产品人气排名的数据库设计 
数据库:mysql 
排序内容:本周人气,本周推荐 
相关参照:oracle sequence 
就是想实现某个产品被点击的更多的排序。 
oracle sequence就可以实现检索一次,序列+1, 
但mysql没有sequence功能。 
如果用mysql的Auto Increment(自动+1)做标记的话, 
我要每检索一次,要更新一次数据库。 
这样觉得比较笨且麻烦。 想问问大家有什么好办法没有? 
多谢指教。

解决方案 »

  1.   

    MySQL的sequence是表级别的,所以你可以单独设计一张SEQUENCE表来记录序列,之后就和ORACLE一样了。
      

  2.   

    oracle sequence也是相对表来说的吧,类似mysql的Auto Increment的原理。像你的“想实现某个产品被点击的更多的排序”,这个,只能在产品里面作个记数吧?每点一次,对应产品点击数+1,而不像你所说的oracle sequence的方式来实现的。
      

  3.   

    楼上的,下面是我百度的内容:
    在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
    http://futureinhands.javaeye.com/blog/213617
    “每次取的时候它会自动增加”这意思不是说我search一次,序列号就+1吗?
      

  4.   

    oracle的sequence,其实就是类似mysql的Auto Increment。一般在触发器或程序里面调用sequence_name.nextval来获取下一个值,这个跟你这里面累计产品的点击数不相符合吧?
    应该有个字段total或有个表进行产品的点击数累加,然后对total进行降序排序就能找到热门的啦
      

  5.   

    在MySQL中没什么好办法,你只能去更新数据库了。不过一般是设计一张访问日志表 (来源IP,访问时间,访问URL,。。)
    然后直接根据这具表进行统计分析。
      

  6.   

    想不出什么其它的方法了。上个贴子中的自定义函数 nextvalue() 外,再有什么办法,就是要改写MYSQL的源代码了。