如果我有2500W条数据,如何存放才能查找最快呢

废柴大叔 发布于 2013/11/12 14:23
阅读 632
收藏 2

如果我mysql里面有

用户名 密码 身份证号 邮箱。

一共2500W行数据。

我希望根据 用户名、邮箱、身份证号 任意一个字段都能最快定位到记录。(ps,最好是mysql数据库)

求大神指教

加载中
1
d
dbtop

我做过记录条数过亿的系统,数据文件过T的系统。

有一个经验就是:

加索引,每次返回有限条记录,不排序

前面几条已经能够满足你之前提到的东西了。关键问是数据量大了如何做数据的统计分析。

如果有数据统计分析的需要的话,通过批处理的方式,先筛选统计分析所需要的数据,放到文件或者批处理的数据库中,批处理再使用后面的数据做统计分析。(不过最近比较倾向于,分量预先分析数据,到一个精简的小表,每次统计用这个小表)简单点说,不要让生产系统的数据库做太多逻辑。

另外,不排序很重要。如果遇到一条SQL语句耗时间太多的话可以用SQL的执行计划,看看到底是哪个子句耗时比较多的话,如果这句SQL有Order by子句,很多时候就是Order by子句耗时比较多。

0
kiwivip
kiwivip
都加个索引就很快了~
0
你要爪子
你要爪子
全部缓存起来。别从数据库查。就快了
0
逝水fox
逝水fox

索引了其实也不慢,我们当初的用户表都有你的三倍了。当然要看机器和内存的分配了,能全部在内存不需要反复磁盘IO是最好的,MYISAM的话,最好自己配置在启动时吧索引全部加载在KeyBuffer中。

废柴大叔
废柴大叔
嗯 我去研究下 KeyBuffer
0
中山野鬼
中山野鬼

哈,和数据行数没有关系。从属性关系确定的角度有两大类方案。一种是分表存放在不同的服务器上。这样通过多个服务器的总线资源和计算资源,分布查询,最后汇总结果。

另一种是每个属性存在一个服务器上,每个查询任务分割约束,得到结果再组合,最后汇总出结果。

两种方案各有好坏。后者对多任务的支持更好。但单一任务下逻辑复杂度更高。这也是为什么nosql现在有存在价值的基础。

废柴大叔
废柴大叔
有道理
0
帖子列表
帖子列表

呵呵 小样


废柴大叔
废柴大叔
难道你也有?
0
那天早上
那天早上
存到xml里面 都比这快
那天早上
那天早上
逗你玩的。。我没搞过她
废柴大叔
废柴大叔
不会吧
0
飞鱼Love
飞鱼Love

引用来自“dbtop”的答案

我做过记录条数过亿的系统,数据文件过T的系统。

有一个经验就是:

加索引,每次返回有限条记录,不排序

前面几条已经能够满足你之前提到的东西了。关键问是数据量大了如何做数据的统计分析。

如果有数据统计分析的需要的话,通过批处理的方式,先筛选统计分析所需要的数据,放到文件或者批处理的数据库中,批处理再使用后面的数据做统计分析。(不过最近比较倾向于,分量预先分析数据,到一个精简的小表,每次统计用这个小表)简单点说,不要让生产系统的数据库做太多逻辑。

另外,不排序很重要。如果遇到一条SQL语句耗时间太多的话可以用SQL的执行计划,看看到底是哪个子句耗时比较多的话,如果这句SQL有Order by子句,很多时候就是Order by子句耗时比较多。

+1
0
匿名t3a
匿名t3a
你这是开房记录?
返回顶部
顶部