假设我有一个记录,用来管理某元件开关的状态,{id:1;开关:ture;其他记录:etc…}。 所有开关的初始状态均为开,随机 X 分钟后变为关状态( X 由用户设定,可以读取到),关闭后永远不会开启。 现在我把 10000 个这样的记录存在数据库的一张表里。我的程序需要每分钟遍历 1 次所有的记录,找出开关是开的。问题是即使只有最后 10 个开关是开启的,我也需要遍历 10000 条记录。当数据量增大之后,每分钟检测一次会成为严重的负担。 有没有减轻负担的方法? ————————————————————————————————————————————————————————————————— 因为关闭的时间是随机的,有可能后面的开关已经关闭了,前面的开关还开启着,所以不能用检测到 y 个开关均为关闭就停止检测;另外已经关闭的开关也不能删除,因为用户还要查看记录。 ————————————————————————————————————————————————————————————————— 我一开始想到的方法是,单独维护一张“开启表”,存储开启开关的 id,形如[1,2,3],所有开关初始默认放到“开启表”,程序只检测“开启表”中 id 的开启状态,程序检测到关闭后再删除。 问题是这样检测的时候,还是要遍历所有的记录,看他们的 id 是否在开启表中,并没有降低负担。 你有更好的方法吗? 非常感谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.