mysql - Can I speed up a fairly simple select query over timestamps? -
i have believe basic query taking long time run.
specifics of mysql server:
- ubuntu server 14.04, 64-bit running vmware workstation virtual machine
- 2gb of ram dedicated vm
the table i'm running query on has 33 columns: timestamp, , 32 columns names (e.g. lew91_4). there 2.5 million records in table currently. columns of datatype float. indexes are:
- column: ndx, index: primary
- column: t_stamp, index: c1_flowst_stampndx
the query:
select date_format(t_stamp, '%m/%d/%y %h:00 %p') 'date', avg(lew91_1r97) 'lew91_1r97', avg(lew91_2r97) 'lew91_2r97', avg(lew91_3r97) 'lew91_3r97', avg(lew91_4) 'lew91_4', avg(lew97_1) 'lew97_1', avg(lew97_3) 'lew97_3', avg(lew97_4) 'lew97_4', avg(lew97_6) 'lew97_6', avg(lew97_7) 'lew97_7', avg(lew97_8) 'lew97_8', avg(lew97_12) 'lew97_12' c1_flows day(t_stamp) = 28 , month(t_stamp) = 09 , year(t_stamp) = 2015 group day(t_stamp), hour(t_stamp) the query taking 11 seconds run when run mysql workbench. when runs within java-based interface i'm using develop hmi, times out specific error "read timed out."
i've run more complex queries on similar servers (i.e. joins, unions, if statements, etc.) , run faster one. there way can speed or missing obvious?
do not use
where day(t_stamp) = 28 , month(t_stamp) = 09 , year(t_stamp) = 2015 use instead
where t_stamp >= '2015-09-28' , t_stamp < '2015-09-29' or
where t_stamp >= '2015-09-28' , t_stamp < adddate('2015-09-28', interval 1 day) and have index on t_stamp. doing way wrote, every record need calculation on clause, , index can't used.
Comments
Post a Comment