日期:2014-05-20  浏览次数:20654 次

一个关于排序的问题,求高性能解决办法。
需求:
index name
1 规则1
2 规则2
3 规则3
4 规则4
5 规则5
6 规则6
7 规则7
8 规则8
9 规则9
10 规则10
11 规则11
… ……
现在要实现自定义排序,
例如:
1:让“规则9”排到“规则2”下面
2:让“规则3”排到“规则7”下面
3:删除“规则5”
要求以上操作要保持index的连续性。

我个人的解决办法:
1:查出3-8的规则,遍历把index+1
  “规则9”的index,update=3;
2:查出>7的规则,遍历把index+1
  “规则3”的index,update=8;
  然后查出>3的规则,遍历把index-1
3.删除“规则5”,查出>5的规则,遍历把index-1


这里的规则信息比较庞大,这样的效率太差,但是实在没想出什么好的办法。请各位说说有没有更好的解决方案。


这里的index字段是备用字段,我准备设置为“index”使用,如上,
大家最好能不改变数据库实现,入需改变,能提高性能,也接受为好方法。





------解决方案--------------------
探讨
引用:
1 首先规则3和规则9交换
update table set name = 规则9 where index = 3
update table set name = 规则3 where index = 9


1:让“规则9”排到“规则2”下面,不能打乱原有的顺序呀。
交换后,原有的顺序会乱了。

------解决方案--------------------
探讨
引用:
除非本来的需求就是直接更新数据库

不只是显示,因为后面还有其他一个实现需要,调用数据库,进行先后排序。

你敲了那么多代码,还是很感谢你呀。