求教 ,如何设计多客户端轮询同一条数据?
有多个客户端轮询表A中记录,有可能同一条记录被多个客户端使用,如何设计做到高效率查询?
最开始设计的是每个客户端查询后将记录的字段标志位添加上该客户端的编号,whoTaked='c1c2c3' ,然后轮询时用position来判断这条记录是否被取走过,完全能满足需要,但效率太低,因为在sql语句中使用了函数。
后改成取recordid来判断每个客户端记录自已符合条件的记录id,每个客户端登陆上来先用一次position查看上次取到了哪条记录,每个客户端保存各自的id,后面就不用position来判断谁取过这条记录,而是不断取大于这个id满足条件的记录,效率提升,也能满足需求,看似是完美解决了。
现在发现这个设计有个问题,因为业务中有个机制是有一部分记录是需要人工审核的,有一部分记录是不需要人工审核的,假如用户提交的数据id是1234状态是1因为需要人工审核所以暂时不能取走,突然来了一条不需要人工审核的1235,等人工审核过后,1234的状态是2可以被取走了,当前的客户端id已经到1235了,1234就不会被取走了。如何设计?请高人指点