最近项目上面出现偶尔缺数据情况,在自己电脑上模拟没有出现此问题,拷贝程序到arm版进行测试,发现CPU占有率维持50%以上,通过逐步输出日志调试,定时查询数据时会卡顿3到4秒左右,通过优化查询语句让查询降低几百毫秒,CPU马上降到10%以内,同时放到现场测试不在出现缺数据情况。
有问题语句:
select DataTime from T_Data_2011 where DataTime > '%1' ORDER BY ID LIMIT 1
优化语句:
select DataTime from T_Data_2011 where DataTime > '%1' ORDER BY DataTime LIMIT 1
表格
CREATE TABLE T_Data_2011( ID INTEGER PRIMARY KEY AUTOINCREMENT, LHCode VARCHAR(10) NOT NULL, DataTime DATETIME NOT NULL, \
Rtd FLOAT, \
Flags VARCHAR(20)\
)
create index LHCode on T_Data_2011(LHCode);
create index DataTime on T_Data_2011(DataTime);
由于数据量已经达百万级别,通过主键ID查询很慢,改为索引字段既然就可以,一直以为主键自动建立索引,后来网上查询还有聚合索引和非聚合索引区别,查询数据速度还是有区别的。