现在有两个软件A,B。   A软件与硬件相连,读取数据然后写入SQL。  B软件同步调用A软件读取的数据。由于某种原因,必须通过SQL
A的数据库相当的庞大。在10GB左右。(而且在不断的增加)。表头有 DeviceCode(设备号)、TestPointSequenceNumber(测量点号)、ParameterName(测量名称)、TestTime(测量时间)、TestValue(测量数值)、Status、WaveID
而我现在需要用B软件,每几秒钟就调用一次他的TestValue数据。(需要条件)
如表头的英文所示。我需要判定的条件。
比如我需要DeviceCode=2000    TestPointSequenceNumber=1    ParameterName=震动  TestTime = XXXXX 这四个条件都满足的时候才输出TestValue。如果没有条件的话他们把所有测量值都输出,这不是我所希望的。实现目标
1.如何实现查询一个时间段内符合多条件的内容。最后输出TestValue
2.如何实现B软件与A软件实时调取。(秒为单位)
我想出来的是如果他第一个判定DeviceCode=2000,是说他要把DeviceCode列全扫一遍吗?然后再扫TestPointSequenceNumber?如果这样B软件要全局几十个点。这样不直接就崩溃了。
有没有什么语句可以实现这样的目的:先扫时间条件。(比如限定30个,因为每次有30个点写入。)得出数据群Z,然后在Z数据群中扫第二个条件。得出数据群X,然后类推。得到符合结果然后输出TestValue。
现在最重要的问题就是怎么能迅速的得到我想要的TestValue。而不是,我3个条件。他就要把整个三大列搜索一遍。那样用户会疯掉的

解决方案 »

  1.   

    就是说各位有什么办法能实现在这么大的数据库中快速的多条件查询么。这个数据库结构是这样的DeviceCode(设备号)、TestPointSequenceNumber(测量点号)、ParameterName(测量名称)、TestTime(测量时间)、TestValue(测量数值)、Status、WaveID 
    这些表头
    我只输出TestValue的值。但是所有设备的类型,采集的数值都在一列中。我必须通过判定DeviceCode、TestPointSequenceNumber、ParameterName 这三个条件才能确定输出的TestValue。
    我现在可以查询是可以。。但是特别特别的慢。我理解的就是SQL他一列一列的去搜索。
      

  2.   

    多少个条件一起查效率是最高的,sql不会把你的四个条件分开一次一次查询的有必要的话,建立一个四个条件字段联合的索引
      

  3.   

    大概的意思是这样的 有一个表有4列 1兆行  我要用1,2,3行的数据当条件筛选出符合的条件 比如说 第一列要是"10"才可以 第二列是"北京" 第三列是"橡皮" 符合10,北京,橡皮这三个条件的那一行就会被筛出,读取第四列的内容。现在的问题是 我可以写一个多条件查询的SQL语句 不过数据库会查询所有1兆行的数据 全部判定一遍是不是符合我的需求 ,可是我只需要前30个结果就好了 我该怎么写SQL语句呢?
      

  4.   

    对这四个DeviceCode,TestPointSequenceNumber,ParameterName,TestTime分别建立索引,同时查询. 
      

  5.   

    select top 30 from tb where ... select top 30 from tb where ... order by ...