大容量数据查询问题

tmdgood 2004-11-08 02:41:03
请教有相关应用经验的大虾:
对于大容量的数据(单个表记录条数过百万)进行操作(插入,删除,更新,和查询《尤其是查询》)
,在相同的硬件条件下,用MsSql好是Oracle好些,还有就是在选择了数据库后,是不是还应该把表分成
几个小表来查询。

现在的情况是,我在sql数据库查询分析器里执行一个查询(select lname from mytb where lname
like '%技术%')就要几分钟时间啊,如果不能解决,浏览我们网站的人早走了.除了对lname加索引和把
表分成几个小表外,还有什么其它的方法可以解决吗。

想不通像百度,google等那些搜索引擎是怎么做出来的,查询速度那么快(他们是不是用的Oracle数据
库哦,好像Oracle数据库是专门针对分布式数据操作产生的,不知道是不是这样的)

小弟菜啊,请大虾帮帮忙啊,小弟感激不尽,解决后另开贴献分答谢.
...全文
378 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
syma7788 2004-11-10
  • 打赏
  • 举报
回复
可以用数据分区的方法
SQL Server 和 Oracle 都有实现的方法!
你可以尝试一下,这才能更好的解决大数据量的问题!!
如果要换数据库的话 就用 Oracle (我的建议)!!!
2002pine 2004-11-10
  • 打赏
  • 举报
回复
把lname作成全文索引
xiaoslong 2004-11-10
  • 打赏
  • 举报
回复
帮你顶
mazekui 2004-11-10
  • 打赏
  • 举报
回复
uyp
歪歪 2004-11-10
  • 打赏
  • 举报
回复
帮顶
tmdgood 2004-11-10
  • 打赏
  • 举报
回复
结帖了,看来都没什么好答案啊
tmdgood 2004-11-09
  • 打赏
  • 举报
回复
在顶起来,希望在有高手出现
tmdgood 2004-11-09
  • 打赏
  • 举报
回复
又掉,再顶
tmdgood 2004-11-08
  • 打赏
  • 举报
回复
谢谢楼上的各位,有更好地吗,请继续啊
doinfo 2004-11-08
  • 打赏
  • 举报
回复
给你个思路吧,当然只是我自己瞎想的,你自己建个索引表,比如所有的汉字,
然后插入数据的时候同时建立好这些索引,用与或非的关系进行APP操作,应该会有不错的效果,虽然麻烦点,但是问题还是能解决的。
jonney23 2004-11-08
  • 打赏
  • 举报
回复
你搜索一个lname,看看要使用多少时间,问题就出在'%XX%'上,这种模糊匹配比较费时,在文件中搜索通常是使用线性的方式从文件头向后全文匹配,通常的FTP搜索引擎都是那么做的,而GOOGLE使用的是给关键字建立索引文件,所以和数据库查询有些不同。
你的DATA字段是不是一个很大的字段?
liuzhen 2004-11-08
  • 打赏
  • 举报
回复
你的问题我也遇到过,原来我做的数据库有500M,大约有几千万条吧。查询起来很慢,一般也会用几分钟才能查到,也没有一直解决的办法。不过我从原来的数据库中把主键、索引等一些数据库必要的加进去后,就会发现查询速度会快很多,而且也不会出现查询超时的错五乐,所以建议你从数据库入手,加索引加主键加关系表,后在看看。还有一定要主要数据库规则,范式。还有注意程序也要改哦。
hebookboy 2004-11-08
  • 打赏
  • 举报
回复
一百万条就要几分钟啊,数据库设计上有问题吧,到数据库区去问问吧
tmdgood 2004-11-08
  • 打赏
  • 举报
回复
楼上的强啊,不过,我需要些实际的,就是具体是怎么操作(要个思路),谢谢了
jonney23 2004-11-08
  • 打赏
  • 举报
回复
这个问题需要使用数据库知识和应用的知识:
首先,MYSQL和ORACLE的区别是前者不支持事务操作,所以能够保证很快的速度,所以很多的论坛都使用MYSQL,因为论坛不是很需要保证数据查询的正确性;后者支持事务处理,有很好的安全和稳定性的保证,如果是存储企业数据的话通常使用这个,而且ORACLE的表数据量最大可以过G,具体多少我就不知道了,为了提高速度,数据库在内部会建立索引(如B+树和哈希)。
表的划分问题:通常要使数据库中的表满足3范式,但根据实际的情况也可以不满足3范式,为的是减少数据库中表的连接操作,因为表的连接操作很费时间,两个有100条记录的表连接需要10000次IO操作,所以要根据你可能的查询条件来处理你的表的结构。
你现在用的是SQL SERVER?(你提到查询分析器了)如果是的话应该不会象你说的那么慢,不过慢可能和你使用模糊匹配有关,不用于查询的字段可能数据量很大。
GOOGLE和百度也是使用的关键字索引技术来保证速度,此外还在全球很多地方搭建了服务器,如果你感兴趣,网上应该能找到GOOGLE的创始人的1997年的论文,介绍了他们是如何实现的。
tmdgood 2004-11-08
  • 打赏
  • 举报
回复
谢谢楼上各位,我数据库里就只有id(自动编号),lname(chr(30)),date(datetime)三个字段,未对lname进行索引。

请楼下的大虾继续
hanbinghai 2004-11-08
  • 打赏
  • 举报
回复
gz
buggavin 2004-11-08
  • 打赏
  • 举报
回复
Oracle相比较来说应该快一些。

试试给你的表建索引,不过索引数量最好控制在3个以内!

尽量不要用like '%什么%',这个效率太低了,估计你是要做类似全文检索的东东!找找相关资料吧!
Alden 2004-11-08
  • 打赏
  • 举报
回复
不应该像你说得那么慢
yidengjiang 2004-11-08
  • 打赏
  • 举报
回复
MySQL适用的是中小型数据量,像你每次要查找几百万条数据的话还是用ORACLE靠得住。

如果想加快浏览速度,当然就是用分页来显示,每次只读取一小部分,时间不会占用很多
加载更多回复(5)

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧