200分:在海量数据中查询有无,应该用什么技术路线才能实现尽可能的快?
数据库用了多年,但理解一直很粗浅。现在涉及一个场景,才在方案讨论阶段,有些问题没有头绪,所以请教一下数据库专家。谢谢。
假定数据库其中一个表就两个字段,第一个字段是一个32个字符的条形码(唯一值,不允许重复),第二个字段是时间(其实第一个字段条形码中有190414这样的固定部分,也可以当做时间)。
这个表可能是无限大的,但是我不需要从所有数据中查询,否则查询应该会随着数据量增多而变慢的吧?
我需要查最近半年的数据,用日期过滤,过滤后的数据行数上限是50万行,也就是半年内的数据不可能大于50万行。我需要查询某个条码在这50万行中是否存在,应该怎么设计才会让这个查询尽可能的快,比如2秒内?
初步构思;
方案1:常规方法,直接select count(barcode) from t_barcode where opttime <sysdate-150;
方案2:把数据先读入内存datatable,程序在开启的时候做这个读入操作,这个阶段就算消耗一些时间也可以接受,内存消耗大一些也可以接受。查询的时候使用某种手段在datatable中查询。
方案3:既然barcode是主键,我就不管时间,直接操作插入这个数据,报主键重复错误则表示重复。
方案4……n都不知道了。
请教专家们,应该用什么方法实现这个目标?(自己搭建测试环境主要担心自己的电脑和服务器的性能差异导致测试结果没有参考性)。
不胜感激!