日期:2014-05-18  浏览次数:20407 次

[经验分享]提高大数量数据查询速度的简单方法
和大家分享一个提高大数量数据查询速度的简单方法。实际工作中的解决方案,有一定的局限性,希望能给遇到类似情况的兄弟姐妹一些启发。
案例:
数据库中有一个主要的数据表,叫它MasterTable,结构如下,数量在10亿条以上,有30列左右。系统中大多数的查询都会与之有关,由于数据量巨大所以效率很低。
解决方案:
生成临时表如TemporaryTable1,TemporaryTable2等,结构如下,这些表根据数据查询的需要只包含MasterTable中的几列,2小时(业务需要)以后将这些临时表Truncate一次,重新产生数据。这样可以大大提高查询的速度。

MasterTable
-----------------------------
|   Col1   |   Col2   |   Col3   |   ……   |
-----------------------------
|   Data   |   Data   |   Data   |   ……   |
-----------------------------

TemporaryTable1
---------------
|   Col1   |   Col2   |  
---------------
|   Data   |   Data   |
---------------

TemporaryTable2
---------------
|   Col1   |   Col3   |  
---------------
|   Data   |   Data   |  
---------------

当然这种解决方法有局限性,就是使用的数据并不是最新的数据,准确点说应该是前2小时以内的数据,但是如果满足业务的需要那么也是可以接受的。最后想提一下,业务需求的确定很重要。顺便提一句,重要数据一般会保存10年不删除,最长的应该是15年(法律规定),国外有些是要求7年。




------解决方案--------------------
终于做了沙发
------解决方案--------------------
学习,接分
------解决方案--------------------
学习过程中,楼主充分体现了知识共享的原则啊!学习知识,学习人品。
------解决方案--------------------
学习,让我又学到了好的优化方法。
------解决方案--------------------
看看.
------解决方案--------------------
生成临时表如TemporaryTable1,TemporaryTable2等,结构如下,这些表根据数据查询的需要只包含MasterTable中的几列,2小时(业务需要)以后将这些临时表Truncate一次,重新产生数据。这样可以大大提高查询的速度。


你生成临时表的时间恐怕也不少吧.
并且数据不是最新的,各人认为意义不大.

另:什么数据有10亿这么大?各年(各地区...)合在一起的数据?不能分表吗?
------解决方案--------------------
LZ的想法很不错,用的地方合适也是个很好的解决方案,局限在只能针对不需要即时查看的数据

我怀疑CSDN也用了类似的办法,比如我在这里看到的个人分数和在个人空间里看到的分数永远是差1天的,这个不是LZ跟CSDN提的意见吧?


对于比较敏感,需要即时查询的数据,同意 dawugui(潇洒老乌龟) 用分区表的办法


------解决方案--------------------
LZ的想法很不错,用的地方合适也是个很好的解决方案,局限在只能针对不需要即时查看的数据

我怀疑CSDN也用了类似的办法,比如我在这里看到的个人分数和在个人空间里看到的分数永远是差1天的,这个不是LZ跟CSDN提的意见吧?


对于比较敏感,需要即时查询的数据,同意 dawugui(潇洒老乌龟) 用分区表的办法
----------------
同意高升的看法..
------解决方案--------------------
看看
------解决方案--------------------
对于一些情况,这种方式的确是适用的。
也确有系统采用类似的做法。

支持LZ分享经验。

------解决方案--------------------
学习学习了 !!
------解决方案--------------------
支持共享
------解决方案--------------------
学习
------解决方案--------------------
顶一下,合适的索引浪费点空间速度会大大提高的……
------解决方案--------------------
分区表只是把表分开,放在不同物理存储位置上,通过硬件去提高查询的速度!
------解决方案--------------------
知识共享
------解决方案--------------------
知识共享
------解决方案--------------------