MYSQL和LabVIEW

MYSQL和LabVIEW,mysql,Mysql,我有一个包含27列和300000行数据的表,其中8列用数据0、1或null填充。使用LabVIEW,我通过以下查询获得这些列的总数: select d_1_result, d_2_value_1_result, de_2_value_2_result, d_3_result, d_4_value_1_result, d_4_value_2_result, d_5_result from Table_name_vp where ( insp_time between

我有一个包含27列和300000行数据的表,其中8列用数据0、1或null填充。使用LabVIEW,我通过以下查询获得这些列的总数:

select  
 d_1_result, 
 d_2_value_1_result,
 de_2_value_2_result,
 d_3_result,
 d_4_value_1_result,
 d_4_value_2_result,
 d_5_result
 from Table_name_vp
 where  ( insp_time between 
 "15-02-02 06:00:00" and "15-02-02 23:59:59" or  
 inspection_time between "15-02-03 00:00:00" and "15-02-03 06:00:00")  
 and partname = "AbvQuene";
此查询针对用户输入的天数运行,例如120天。 我发现查询所花费的总时间是8秒,这并不好。 我想把时间缩短到8毫秒。 我还把引擎换成了Myisam。
任何减少查询时间的建议。(LabVIEW处理不需要时间)

这取决于数据,以及
WHERE
子句实际选择了300000行中的多少行。显然,如果将所有30万人都包括在内,则需要阅读整个表格。如果行数较少,则在
insp\u time
inspection\u time
(这只是一个输入错误,它们实际上是同一个字段吗?)和/或
partname
上的索引可能会有所帮助。准确的索引将取决于您的数据。

更新2:

我看不出有什么理由不能将整个数据库加载到内存中,因为它应该小于60MB。你同意这一点吗

请将您的答案和以下问题的答案发布(您可以在提问后编辑问题-这比评论容易)

下一步:

  • 我之前应该提到,在LabVIEW中运行查询之前,我总是先使用DB管理工具(例如MySql Workbench)进行测试。请张贴是否有效

  • 发布您的LabVIEW代码

  • 您可以尝试使用少于300K行运行查询,比如说50K行,看看内存增加了多少。如果一次可以查询的行数有限制,那么可以很容易地将大型查询分解为较小的行,然后将结果集相加。我可以张贴一个例子,如果需要的话

  • 更新: 听起来你的模式好像有问题

    例如,如果您有27列double's和datetimes(每列都是8字节),那么总的数据库大小将只有大约60MB(300K*27*8/1048576)

    请发布您的模式以获得进一步帮助(您可以使用SHOW CREATE tablename)


    8毫秒是一个极低的时间-我想这是由某种类型的硬件定时问题驱动的?如果没有,请解释该要求,因为典型的用户要求大约为1秒

    要获得如此低的响应时间,您需要执行以下操作:

  • 在应用程序开始时查询数据库,并将所有300000行加载到内存中(例如LabVIEW阵列)

  • 使用新值更新数组(例如数组附加)

  • 对数组运行“查询”(例如,使用带有案例选择的for循环)

  • 在单独的线程(即LabVIEW“循环”)上,将新记录插入数据库或在应用程序关闭前写入


  • 这种方法假设一次只运行应用程序的一个实例,因为要在多个实例之间同步数据库更改将非常困难,这是时间要求。

    我在上面提到了这一点-请发布您的模式信息。创建表
    gtron\u component\u info
    part\u count
    bigint(20)默认空,
    system\u id
    varchar(50)默认空,
    packaging\u level\u 1\u no
    varchar(50)默认空,
    location
    varchar(50)默认空,
    part\u type
    varchar(50)默认空,
    datetime默认空,
    Total\u Count
    bigint(20)默认为空,
    inspection\u result
    tinyint(4)默认为空,
    defect\u 1\u值\u 1
    float(8,4)默认为空,
    defect\u 1\u result
    tinyint(4)默认为空,
    defect\u 2\u值\u 1
    float(8,4)默认为空,
    defect\u 2\u值\u结果
    tinyint(4)默认为空,
    defect\u值(8,4)默认为空,
    defect\u 2\u值\u 2\u结果
    tinyint(4)默认为空,
    defect\u 2\u结果
    tinyint(4)默认为空,
    defect\u 3\u值\u 1
    float(8,4)默认为空,
    defect\u 3\u结果
    tinyint(4)默认为空,
    defect\u值\u 1
    float(8,4)默认为空,
    defect\u 4\u值\u 1\u结果
    tinyint(4)默认为空,
    defect\u 4\u值\u 2
    float(8,4)默认为空,
    defect\u 4\u结果
    tinyint(4)默认为空,
    defect\u 5\u值\u 1
    float(8,4)默认为空,
    defect\u 5\u result
    tinyint(4)默认为空,KEY
    defect\u 1\u result
    defect\u 1\u result
    ),KEY
    defect\u 2\u value\u 1\u result
    ),KEY
    defect\u 2\u value\u result
    defect\u 2\u值\u 2\u result>),KEY
    defect\u(
    defect\u 2\u result
    )、KEY
    defect\u 3\u result
    defect\u 3\u result
    )、KEY
    defect\u 4\u value\u 1\u result
    )、KEY
    defect\u 4\u value\u 2\u result
    defect\u 4\u value\u 2\u result
    )、KEY
    defect\u 4\u result
    ,KEY
    defect\u 5\u result
    defect\u 5\u result
    ),KEY
    inspection\u time
    )(
    inspection\u result
    ),KEY
    inspection\u result
    )引擎=MyISAM默认字符集=utf8/*!50100按范围分区(到天数(检查时间))(分区p1值小于(“15-02-01”)ENGINE=MyISAM,分区p2值小于(“15-03-01”)ENGINE=MyISAM,分区p3值小于(“15-04-01”)ENGINE=MyISAM,分区p4值小于(“15-05-01”)ENGINE=MyISAM,分区p5值小于(“15-06-01”)ENGINE=MyISAM,分区p6值小于(“15-07-01”)ENGINE=MyISAM,