Howdy MySQL Subscribers.

I'm hoping some MySQL users more experienced than myself can shed light on 
a work-related question that has recently arisen. We have a database with 
24 meter tables similar to meter1 below. 

mysql> explain meter1;
+------------------------------------+--------------------------+-------+-------+-------------------------------+--------+
| Field                                       | Type  | Null   | Key | 
Default                            | Extra |
+------------------------------------+--------------------------+-------+-------+-------------------------------+--------+
| date_time                             | datetime                  |   |  
      |  0000-00-00 00:00:00   |            |
| count_per_minute              | int(11)                       |   |    | 
0                                        |            |
| dose_equiv_per_minute | double unsigned | YES  |         | NULL        | 
          |
| counts                                    | varchar(255)          | YES 
|         | NULL                                |           |
+------------------------------------+--------------------------+--------+------+--------------------------------+-------+

The tables are populated with data from neutron monitoring stations; data 
are collected from the monitors and inserted into their respective tables 
once per minute. Currently there are some 45,000+ records in each table, 
though once in production mode we expect significantly higher record 
counts ( the schedule of data backups and table truncations has yet to be 
determined ).  The data looks like this: 

mysql> select date_time, count_per_minute, dose_equiv_per_minute from 
meter1 order by date_time desc limit 40000, 10;
+-----------------------------+---------------------------+------------------------------------+
| date_time                    | count_per_minute | dose_equiv_per_minute 
|
+-----------------------------+---------------------------+------------------------------------+
| 2003-11-25 19:51:01 |             2310               | 0.483598  |
| 2003-11-25 19:50:01 |             2316               | 0.484855  |
| 2003-11-25 19:48:01 |              772                | 0.161618   |
| 2003-11-25 19:47:01 |             3846               | 0.80516         |
| 2003-11-25 19:46:01 |                8                   | 0.001675    |
| 2003-11-25 19:44:01 |             2313               | 0.484227  |
| 2003-11-25 19:43:00 |             2313               | 0.484227  |
| 2003-11-25 19:41:00 |             1032               | 0.216049  |
| 2003-11-25 19:40:00 |             3587               | 0.750938  |
| 2003-11-25 19:39:00 |                7                   | 0.001465    |
+-----------------------------+---------------------------+------------------------------------+

We have a web GUI written in PHP that calls a C program which queries the 
database, analyzes the data, and creates a PDF report. One of many 
analytical tasks of this program is to find the maximum sum of the field, 
`dose_equiv_per_minute`, from any 60 consecutive records. In other words, 
we need to sum the values from `dose_equiv_per_minute` for records 1 
through 60, 2  through 61, 3  through 62, etc... then determine which is 
the max sum. Currently this is being handled on the client-side through 
the C program, which selects all of the (many thousands of ) records, then 
does the math and loops through them, group by group. As you can imagine, 
if one were creating reports from all 24 monitors, the number-crunching 
can be quite time consuming (upwards of 5 minutes at present for just over 
6 weeks worth of data). So the question is, can we save some time by 
asking the MySQL server to crunch the numbers, and if so, what would the 
query be to accomplish this task?

Any and all suggestions greatly appreciated.

TIA , 

dave 













Reply via email to