[经验分享]提高大数量数据查询速度的简单方法
和大家分享一个提高大数量数据查询速度的简单方法。实际工作中的解决方案,有一定的局限性,希望能给遇到类似情况的兄弟姐妹一些启发。
案例:
数据库中有一个主要的数据表,叫它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分享经验。
顶
------解决方案--------------------学习学习了 !!
------解决方案--------------------支持共享
------解决方案--------------------学习
------解决方案--------------------顶一下,合适的索引浪费点空间速度会大大提高的……
------解决方案--------------------分区表只是把表分开,放在不同物理存储位置上,通过硬件去提高查询的速度!
------解决方案--------------------知识共享
------解决方案--------------------知识共享
------解决方案--------------------