数据库:
id name order
1 163 1
2 sina 2
3 sohu 3
4 google 4
id是自动增加的,name为用户输入的,order是排列顺序
当用户将google提前时:
id name order
4 google 1
1 163 2
2 sina 3
3 sohu 4
id和name不能变,是不是每个order都需要更新才行啊?这样服务器会不会累死啊!
有没有好一点的办法呢?
---------------------------------------------------------------
如果只是提前的话可以用时间来代替ORDER,这样子只要更新时间就可以了。
---------------------------------------------------------------
是每个order都需要更新才行
这样服务器还不至于会累死,服务器就是为你服务的嘛
---------------------------------------------------------------
刚刚想到一种方法。。
更新两次就可以了。。
往前排
第一次就是把小于指定ORDER和大于等于提前到的ORDER值都加一
第二次 就是更新指定记录ORDER
往后排则反其道。
---------------------------------------------------------------
回复人: xuzuning(唠叨) ( ) 信誉:699 2005-08-05 08:29:00 得分: 0
是每个order都需要更新才行
这样服务器还不至于会累死,服务器就是为你服务的嘛
---------如果楼主存的ID很多的,达数万,呢?还是这样子的吗?
---------------------------------------------------------------
我用的是登陆时间更新,,,最后登陆时间更新,比order方便
---------------------------------------------------------------
如果你能保证你的order字段是int型或是float型的
那么,真是太简单了。 :-)
如果是int型。真接将 4 改成 -1 或其它比1小的数就行呀。
如果是float型那真是太方便啦。如果想将4改成移到3前面2后面,那么将4改在2.000001都行呀。
就行一万行数据也不会引响速度。
---------------------------------------------------------------
如果操作只有两种:
提到最前
提高一位
提到最前只要比最小的小就可以了
提高一位就和上一个交换一下
---------------------------------------------------------------
呵呵!
“如果楼主存的ID很多的,达数万,呢?还是这样子的吗?”
当然啦!请注意到楼主的说法:“当用户将google提前时”
既然是“用户”的操作,那么他可以在将google提前后再将163提前。动作是不确定的、不可预知的