数据库是Sql server2000,有什么好的方法可以进行查询(要求速度快)数据量在几千万条以上。
请大家帮帮忙,给点好的想法或意见也行。
谢谢!

解决方案 »

  1.   

    索引很重要,你的 Select 语句也很重要,尽量优化!多用子查询,少做链接,多看书
      

  2.   

    如果查询的有几张表,在from后表的顺序是小表在前,大表在后
    写SQL语句时,应该用关键字IN代替OR运算符,虽然IN也会增加查询的时间,但比OR还是效率高一些
    尽量不要用HAVING子句,HAVING子句将导致SQL优化器的额外工作,从而会要付出花费额外时间的代价..............当然,我也不是说我就做到了查询海量数据时就真的很快,也只是尽量采用了各种优化手段,有时也得不到很好的效率....再次表示强烈关注!!!
      

  3.   

    SQL server数据量在100万条以下时速度可以满足应用需要,数据上亿条,我建议你采用IBM的DB2吧.
    SQL server 和甲骨文的ORACLE都是应用于小数据量部门级服务器的,索引、优化的查询语句虽然可以提高速度,但根据哥们说法,对大量数据处理的情况力不从心。IBM DB2是大数据量处理的几乎唯一选择。
      

  4.   

    TO:cg111,你小子也太夸张了吧,具然把ORACLE和SQL SERVER相提并论,有机会你多试试,ORACLE在海量数据优化上绝对是最好的,
      

  5.   

    哎,我也遇到这个问题用的是MSSQL,一个表里有一千五百万条记录左右,现在还以每天100多条的速度增长中。
    随便Select一个vchar的字段用=的就要30多秒,用like的就要1分10多秒。
    (而且还是在用户量比较少的情况下才是这样,如果有20个用户连上的话时间就要翻几倍了
      

  6.   

    对了建立索引对带like的select查询好像没什么用,花的时间几乎一样的。
      

  7.   

    我觉得还是分页的方法好。
    我知道用Select Top 10....这个可以取得前10条记录,但是下面的不知道如何办?
      

  8.   

    强烈关注,up。
    我也遇到过,十万条记录的主表带了一个一千二百万条记录的从表,而且从表还在按月增加,开始用过ORACLE,用户(100个点)速度也受不了,后来改成MSSQL更槽糕。后来被迫两次对服务器进行硬件升级,还是有点玩不转。
      

  9.   

    mssql对内存绝对感兴趣!内存越大!速度也越快.......
      

  10.   

    我听说在mssql中有一个存储过程,可以做分页的,不知道是不是真的。
      

  11.   

    好久没用MySQL,试试这句可以吗
    select fields from table where ... LIMIT [offset,] rows
      

  12.   

    1.对海量级数据库,优化SQL写法,分析SQL的执行成本!
    2.按经常查询的字段建立索引!
    3.按一定的规则把不经常访问的数据放到历史表中!
    就想到这么多!大家多提看法!
      

  13.   

    对于千万级的表倒不是太大的问题,上亿之后就不好说了,
    我做深圳市所有农行自动存取款机的数据纪录,要保存一年,量也相当大的,只不过农行里的小型机好像是有32G内存,16个CPU,深圳农行的所有数据量处理还用不到处理能力的20%,还有一台大型机,具体的处理能就不知道了。
      

  14.   

    如果数据量很大,首先建议你要再用SQL Server了,这个东东只适合在中小企业用,大的可以找成Oracle什么的,刚才有位仁兄居然轻易把她否定了,我想,可能是他对IBM感情太深的缘故吧.其次,建议你的领导,想尽一切办法进行硬件升级吧,小型机比较好,大型机太浪费,呵呵呵最后,你要做的,就是到"数据库"版去学学如何做DBA,然后才是学习如何写DB应用系统.
      

  15.   

    IBM P系列服务器+Oracle 9i
      

  16.   

    对于需要处理海量数据的应用,建议你从以下几个方面去考虑:    首先REVIEW一下你的设计,是否真的这样设计吗?(比如当天的记录放在一个表中,历史记录放在另外一个表中,或者根据你的应用来判断哪些或者哪个时间段的数据使用频率高然后将他们独立出来,如果涉及统计查询的话,将历史数据在系统不繁忙的时候预先做个统计),尽量将数据存储和应用逻辑独立(也就是所谓的多层),大多数的系统出现这样或那样问题其根源都是设计不好    其次可以做的是优化你的代码,包括SQL语句和程序代码(比如对数据分段处理等),这个很多地方都有介绍,也要看开发人员的经验水平    再者可以使用缓存技术,将用户查询过的东西先保存起来(内存或者磁盘上,当然需要一个淘汰算法只缓存部分查询数据),如果后面的查询条件一样的话可以立即将以前保存的给用户如果有条件的话:
        一是更换你的数据库,建议你采用ORACLE(这个专业),这样你就可以将这个表的数据分布在多个表空间中(一个表空间相当于一个文件,你可以将这些表空间分布在不同的磁盘上,这样数据库就可以充分发挥并行处理能力);    二是采用集群技术或网格技术,在多台主机上部署你的数据库(当然需要支持这些技术的数据库)和应用。    总之,数据库设计看起来很简单,其实技术含量非常的高,需要设计者有很宽广的知识面和丰富的相关经验及行业知识,如果没有相关专家级人才的话只能一步步的摸索,逐步改进