关于海量数据库表(100 万条记录以上)的模糊查询优化问题。。。(100分)

  • 主题发起人 主题发起人 bkfx
  • 开始时间 开始时间
mygod!兄说的是,在这点上我是深有体会,要加快速度要在硬件上花工夫,不是通过设置能取得好的效果的。另处多CPU也能大大提高运行速度(关于这点我是有实际的经验的)。如果再大些数据,就要用上分布式了[:D]
 
1.建立合理的索引
2.合理的表定义
3.最好不要有‘%xxx%'的查询
在150~200万数据中达到 1~3秒响应还是有可能的,但是一个查询索引用的不对
(注意还不是全部扫描)你可能就会遭到惩罚,来个1、2百秒甚至更多
 
TO xie_p_f:
如果不用‘%xxx%'方式的查询,那么用哪种方式进行模糊查询最好呢?
 
现在提供一个很好的dbms:sapdb,各方面性能很不错,我现在再用,是免费的,可到www.sapdb.com下
 
"dbms:sapdb"
这种根本不入流的东西就算了吧!
要说免费的,我选 MySQL ,甚至 Oracle !

 
在库结构和存储方案合理的情况下
是不是可以考虑一下多线,把一个统计分成几个子查询放入不同的线程,
再对查询结果进行处理。
 
1、建立合理的数据表和索引文件
2、使用G以上容量的内存,使用高速的磁盘系统
3、使用带有4个CPU内核的双CPU结构
4、利用程序经常性的汇总数据,做好备份
5、利用一个附加的程序监测数据庫
 
多用几台计算机,分布式查询
将数据分布到多台计算机,
然后再将查询结果合并,
将相似的数据放在同一台计算机上,查起来就更快了
google估计就是这么做的,查询速度多快呀
 
To bkfx:
老师,我来听课了。:)
大富翁中的《全文查询》是否么做的? 是模糊查询吗?
 
建 full-text index 啊 這個東西就是用來解決這個問題
DFW 的全文查询 也是用了類似的東西
 
1、库的结构和索引要建立的比较合理,库的物理位置也很重要,可以将一个库分布在不同的硬盘上
2、CPU速度快,内存大,硬盘吞吐量高
3、查询的select语句要优化,可以通过查询分析器来进行。
4、SQL配置要合理并不断调整优化。
 
虽然不是很切题,但还是给大家一个作参考的贴子:
http://bbs.et8.net/bbs/showthread.php?s=&threadid=256074
 
给大家介绍个数据库论坛:
http://www.itpub.net
http://www.itpub.net/showthread.php?s=e2d0860d194c29ea40fee39e298e7b21&threadid=61107
http://www.itpub.net/showthread.php?s=e2d0860d194c29ea40fee39e298e7b21&threadid=64210
 
我不知道sql server是否支持列分区,在oracle中可以将一个数据表的不同列
定义到不同的表空间,通过合理的分配列的存储位置,也可以带来性能上的极大
提高,同时,将使用的不同的索引放到不同的表空间上,也能带来性能的极大
提升。

有一点可能对你是有用的,如果你打算将数据、索引等分配到不同的硬盘上
来换取速度的话,ide硬盘是不行的,一定要用scsi。
 
象这种情况,我的意见是选用ORACLE是无疑了,采用其划分优化策略,
12-7日,小猪的意见我很赞同,什么“CPU速度快,内存大,硬盘吞吐量高”的话,
我不爱听,老大,用‘深蓝’来作DB SERVER 好不好,得花MONEY呀;
另外,是不是考虑,分区段查询,因为应用总爱关心最近的数据,对于那些久远的数据,
暂作应用可选项,选定了后,那也只好硬着头皮去查了,虽然用户的要求都变态,但超级
变态的毕竟还是少数
 
sql 2000是里有分区的概念的
 
一年一个表1440*365=525600
52万,oracle,还可以的
换年,就换个表
查询时根据时间条件查不同的表
 
最近看了一本名叫 Microsoft SQL Server 2000 Performance Optimization and Tuning Handbook 的英文版电子书,里面提到了许多非常有用的关于SQL2000性能优化的问题,大家有时间不妨看看。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部