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

  • 主题发起人 主题发起人 bkfx
  • 开始时间 开始时间
B

bkfx

Unregistered / Unconfirmed
GUEST, unregistred user!
我想到的方法是:
1、建立合理的数据表和索引文件
2、使用G以上容量的内存,使用高速的磁盘系统

不知各位还有什么好的建议?
---------------------------------------------

我用的数据库为 MS SQL 2000 企业版
 
只有听的份......
 
象这种情况,你说的是已行了,别的办法可不多啊,以下一个供你参考。
这么大数据量,你还要模查,你也也行啊,这主要不能在后期解决,你有前期就应考虑到,在数据库设计时都要想到,这样才不至于出现这种情况
http://www.delphibbs.com/delphibbs/dispq.asp?lid=853039
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=853039
上面的主要是讨论添加记录的问题。

-------------------
我想数据库就算前期的设计非常好,数据量总也会达到海量的,所以这种情况是
无法避免的!
 
我们在做商业软件,解决大数据量的方法是:不在同一个表里存放过多过久的数据,经常性
地做汇总工作,把汇总过的明细数据导出,查询的内容为汇总后的数据,这样保证查询的内
容不会过多,其他的就是硬件配置要高一点了。通常的大商场都用小型机的……
 
这个,主要是数据库的优化问题了,不过,百万级别实在不算多,呵呵。。。
 
在建数据表时,我的想法与 thong_517 差不多,都是希望把数据尽量地放在不同的表或者
是不同的硬盘。
 
把索引文件放在一个单独的硬盘加速查询
 
更换数据库可能会好一点,因为ms sql是公认现在最烂的数据库。
 
to chenxz:
这倒是第一次听到!
 
sql server百万级别的真不算多,只要nvchar不要都是2000个字符长,没有很多text赫
image类型的:)
 
我们系统是关于电信话务应该还是上百万级的,我们的处理是:经常要变的数据一般是一个月
就生成一张新的表,然后清空以前的表,查询的时候先根据时间来找在那个表中查询。
索引很重要的。
 
定期对数据库进行优化,具体请参照数据仓库技术。
 
将常用的短的字段放在一个表中进行查询,大的不常用的字段另外放在一个表中,需要使用时
再调用。
 
用存储过程
 
把数据库导入oracle吧...那玩意经受得住考验(如果对oralce通的话)
数据库前期设计的时候就要考虑到海量及存储。这是要有预见性的。现在让你改。
不是更头痛吗。
建立多重索引。优化数据库性能。结合存储过程。。。[:)]
 
现在我在用的一个系统是哈尔滨一家编的。服务器开FTP接受前方传来的数据,然后进行报文处理,
(这个时候一台X232服务器的CPU占用率可以达到90%以上!)
最后进ORACLE,一天也就几千条记录吧。用了几个月,现在真是龟速,常常程序用用的就
无响应,系统假死,(2000 Advanced Server)搞得我欲哭无泪!
 
我曾经试过 Oracle 9i 和 MS SQL 2000 在 100 万条记录的查询情况对比,发现在相同的软硬件
环境下还是 MS SQL 2000 快,另外还发现 Oracle 非常耗系统资源!Oracle 对硬件系统的要求完全
是企业级的!否则你休想玩的转它!


 
建立索引比较重要的了,
建表时也要考虑字段的顺序,,短的,不能为空放前面
 
如果楼上的同志们出的方法仍未能解决问题,那只有最手一招了!!!
==================================
加内存是最直接和最有效的方法!!!!!
这问题我研究过,算法上,无论你怎么优化,都远不如加一条内存:)
sql server对内存的需求是海量的:)
 

Similar threads

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