一颗跳石 2017-06-29 02:56 采纳率: 0%
浏览 2075

mysql 百万数据查询缓慢怎么解决 已经分区,并且主键索引. 求解决

mysql数据库, 引擎是innoDB,但是查询时间还是很慢, 有的已经达到30s, 找不到问题所在,求大神指点,这是查询代码,并无连表什么的, 分区是按月分的,只6月份的数据文件大小就22G,请问这个是问题出在哪里了?

图片说明

 SELECT `PQData`->'$."BB1#V_RMS#Phase_AB#0#VOLTS"."avg"' AS `BB1#V_RMS#Phase_AB#0#VOLTS_avg`, `PQData`->'$."BB1#V_RMS#Phase_AB#0#VOLTS"."max"' AS `BB1#V_RMS#Phase_AB#0#VOLTS_max`, `PQData`->'$."BB1#V_RMS#Phase_AB#0#VOLTS"."min"' AS `BB1#V_RMS#Phase_AB#0#VOLTS_min` FROM `pd_1_1_pqfreeintervaldata` WHERE `DeviceID` = 9 AND `RecordTimeStampLocal` BETWEEN 1494239850 AND 1498732650

附图:
这是explain的查询,显示在分区查询
虽然是九十万条但是是mysql的5.7.17json字段存储,json数据

换成>= <=

SELECT `PQData`->'$."BB1#V_RMS#Phase_AB#0#VOLTS"."avg"' AS `BB1#V_RMS#Phase_AB#0#VOLTS_avg`, `PQData`->'$."BB1#V_RMS#Phase_AB#0#VOLTS"."max"' AS `BB1#V_RMS#Phase_AB#0#VOLTS_max`, `PQData`->'$."BB1#V_RMS#Phase_AB#0#VOLTS"."min"' AS `BB1#V_RMS#Phase_AB#0#VOLTS_min` FROM `pd_1_1_pqfreeintervaldata` WHERE `DeviceID` = 9 AND `RecordTimeStampLocal` >= 1494239850 AND  `RecordTimeStampLocal`<=1498732650


图片说明

  • 写回答

4条回答 默认 最新

  • Himly_Zhang 2017-06-29 03:08
    关注

    另外补充下,其实你单纯查一个大表,用索引字段=xxx 获取结果还是很快的,但是如果count(1) 结果非常大。肯定就会非常慢

    评论

报告相同问题?

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号