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

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -