MYSQL 数据库
有一个消息日志 MESSAGELOG 表,系统每隔2秒会向里面插入大概10条记录
现在这个表里面有30万条记录 有 id,time,label_id,tower_id,station_id 5个字段,id是主键
这个表的特点是 label_id,tower_id,station_id的重复非常多, 很多记录不同的地方就是时间time
不一样(当然还有id不一样)
比如label_id=226的记录有27216条,这个 27216 条记录的 label_id,tower_id,station_id都一样,就time不一样
这个查询:
select count(1)
from MESSAGELOG log
LEFT join LABEL label
on log.label_id = label.binary_id
LEFT join DEVICE tower
on log.tower_id = tower.binary_id
LEFT join DEVICE station
on log.station_id = station.binary_id
where tower.type in ('TYPE_ONEWAYTOWER','TYPE_ALLWAYTOWER')
and station.type = 'TYPE_STATION'
需要4秒。
MESSAGELOG 表 time,label_id,tower_id,station_id有索引,还有一个(label_id,tower_id,station_id)联合索引
MESSAGELOG 30万记录,LABEL 表20条记录,DEVICE 24条记录
上面的查询要用4秒,属于正常,还是慢? 索引设计的合理么,该怎么设计?
另外,这个日志表的数据会越来越多,对于300万,500万,乃至1000万的数据量,继续用MYSQL合适么?
希望有经验的朋友说说。