首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

[经验分享]提高大数量数据查询速度的简单方法解决方案

2012-02-14 
[经验分享]提高大数量数据查询速度的简单方法和大家分享一个提高大数量数据查询速度的简单方法。实际工作中

[经验分享]提高大数量数据查询速度的简单方法
和大家分享一个提高大数量数据查询速度的简单方法。实际工作中的解决方案,有一定的局限性,希望能给遇到类似情况的兄弟姐妹一些启发。
案例:
数据库中有一个主要的数据表,叫它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分享经验。

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


知识共享 升~~
[解决办法]
LZ的想法很不错,用的地方合适也是个很好的解决方案

3Qlz
[解决办法]

[解决办法]
MARK
[解决办法]
连三
支持
[解决办法]
支持,頂!!!
[解决办法]
上次好像哪看到鄒老大說他們一個table ,90G......
[解决办法]
mark
[解决办法]
學習
[解决办法]
XUEXI
[解决办法]
我是新手
[解决办法]
鼓励这种精神
[解决办法]
多谢分享
[解决办法]
大表的话首先从设计上就不应该单表:给出个人见解
1.考虑使用分区表,sql2k使用分区视图,根据查询的条件(频繁做条件的字段)合理建立索引
2.最新的数据如最近3个月的数据保存在另外一个表t_new中,t_new和原大表间的数据转移可以考虑job在空闲的时候执行。
[解决办法]
学习一下!
[解决办法]
up
[解决办法]
建立试图索引吧呵呵这样比较好
[解决办法]
路过,学习。
[解决办法]
路过,学习了.
也可以做查询业务分库.
[解决办法]
学习
[解决办法]
学习一下,多谢楼主分享。
[解决办法]
学习了!
[解决办法]
其实可以对大表采用分区存放的方法来优化性能
[解决办法]
mark
[解决办法]
q
[解决办法]
其实就象磁盘缓存一样 始终保存最新的数据
[解决办法]
数据库集群可否?不懂,问一下
[解决办法]
学习.

很不错.回帖中也有不少好方法
[解决办法]
To dawugui(潇洒老乌龟): 
我同意你的 ! 我的數據庫不大7G 我都建立歷史數據庫 超過6個月的我就會保存 ! 這樣加速數據庫的查詢
[解决办法]
学习
[解决办法]
赞成
[解决办法]
学习
[解决办法]
学习
------解决方案--------------------


赞成
[解决办法]
学习~!

热点排行