给大家出个题目:
C#,SQLSERVER,WINDOWS2003环境.
我有一个黑名单表,里面500多万行数据.字段:userid,insert_time.我的程序在处理用户请求的时候一定要判断他是否在黑名单,如果在的话,我就不给他处理.约束:黑名单有可能随时被修改(增,删).
约束:即使最新添加的黑名单,我也要求程序把其屏蔽.要求:写出一个高效率的解决方案(文字描述即可).
题目不算非常严谨,但基本没有什么歧异.大家有兴趣不妨留意.另外,为了活跃群气氛,我会把这个题目放到CSDN ,大家自行关注答案.
C#,SQLSERVER,WINDOWS2003环境.
我有一个黑名单表,里面500多万行数据.字段:userid,insert_time.我的程序在处理用户请求的时候一定要判断他是否在黑名单,如果在的话,我就不给他处理.约束:黑名单有可能随时被修改(增,删).
约束:即使最新添加的黑名单,我也要求程序把其屏蔽.要求:写出一个高效率的解决方案(文字描述即可).
题目不算非常严谨,但基本没有什么歧异.大家有兴趣不妨留意.另外,为了活跃群气氛,我会把这个题目放到CSDN ,大家自行关注答案.
可以考虑下分表,SQL2005这个方面好像支持的不错。
如果还是不行的话,考虑下升级硬件
说下我个人设想的比较好的做法.首先,hashtable肯定是最好的做法了,比任何的从sql方面优化都来得直接.因为他操作的就是内存.
这个例子唯一麻烦的就是:怎么把数据库更新的内容也更新到内存.这个前提当然是从 所有的更新的地方开始设计,任何程序对 黑名单表插入信息的话,也需要对hashtable所在程序进行更新. 2者任意一项失败 则操作回滚.所以:
1.从数据库初始化出hashtable到程序A
2.C,D,E,F,G等程序对黑名单的任意更新操作均需要通知程序A,并且保障数据统一性
其实我开这个帖子是想看看别人或许有其他什么方法也能有很优秀的效果.如果谁有更好的方法 欢迎拍个详细点的砖过来.