Goeiedag,
Ik ben met een script bezig die een aantal resulaten op aan de hand van een paar colums. Het duurd nu voor 4/5 colums rond de 4 seconden om data op te halen en te matchen.
Nu ben ik bang als de data aardig oploopt dit traag gaat worden. De hoofd tabel kan straks wel (minimaal) 5.000 rijen per dag gaan loggen en de listdata tabel kan dan bv 10.000 rijen bevatten.
Stukje code wat ik gebruik;
Ik ben met een script bezig die een aantal resulaten op aan de hand van een paar colums. Het duurd nu voor 4/5 colums rond de 4 seconden om data op te halen en te matchen.
- Ik haal eerst alle kolommen op van de tabel die aangeroept word.
- Dan kijk ik of er in de kolomnaam 'pipeline' in zit en geen 'website'.
- Omdat er meerdere zelfde resulaten zijn wil ik dmv een INSTINCT alle resulaten die het zelfde zijn één maal terug krijgen waar ook nog eens een WHERE aan vast zit.
- Daarna word dmv een where een match gemaakt; een afkorting zoals 'NL' word dan 'Nederland', die 'NL' komt dan uit de 3de stap.
- Daarna voer ik een sum om de totalen te krijgen.
- Alles word nu in een array gestopt
- Array word gesorteerd op de 'commission'
- En er word nog een array_reverse opgeroepen om de 'commission' boven aan te krijgen.
Nu ben ik bang als de data aardig oploopt dit traag gaat worden. De hoofd tabel kan straks wel (minimaal) 5.000 rijen per dag gaan loggen en de listdata tabel kan dan bv 10.000 rijen bevatten.
Stukje code wat ik gebruik;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| // Haal dynamische columns op $sql_columns = mysql_query( "SHOW COLUMNS FROM ". $_GET['TABLE'] ); if( mysql_num_rows( $sql_columns ) ) { $i=0; while( $cr = mysql_fetch_object( $sql_columns ) ){ if( stristr( $cr->Field, 'pipeline' ) && !stristr( $cr->Field, 'website' ) ) { ${$cr->Field} = array(); echo '<div class="selector">'; echo '<span><a name="sortbox" style="cursor:pointer;" onclick="javascript:sort(\''.$cr->Field.'\', \''.$JWHERE[1].'\', \'clicks\' );">Cli.</a> | <a name="sortbox" style="cursor:pointer;" onclick="javascript:sort(\''.$cr->Field.'\', \''.$JWHERE[1].'\', \'commission\' );">Com.</a> | <a name="sortbox" style="cursor:pointer;" onclick="javascript:sort(\''.$cr->Field.'\', \''.$JWHERE[1].'\', \'epc\' );">Epc.</a> | <a name="sortbox" style="cursor:pointer;" onclick="javascript:sort(\''.$cr->Field.'\', \''.$JWHERE[1].'\', \'sales\' );">Sal.</a></span><br/>'; echo '<select name="count_'. $cr->Field .'" size="1" multiple="multiple" class="listauto" id="count_'. $cr->Field .'">'; $sql_types = mysql_query( "SELECT DISTINCT ". $cr->Field ." FROM ". $_GET['TABLE'] ." WHERE ". $cr->Field ." != '' AND analytic_timestamp ". $BETWEEN ." ". $WHERE ); if( mysql_num_rows( $sql_types ) ) { while( $tr = mysql_fetch_object( $sql_types ) ) { $sql_data = mysql_query( "SELECT list_replace FROM listdata WHERE list_website = '". $_GET['TABLE'] ."' AND list_table = '". $cr->Field ."' AND list_find = '". $tr->{$cr->Field} ."' " ); $dr = mysql_fetch_object( $sql_data ); if( mysql_num_rows( $sql_data ) ) { $sql_math = mysql_query( "SELECT SUM(analytic_commission) as commission FROM ". $_GET['TABLE'] ." WHERE analytic_timestamp ". $BETWEEN ." AND ". $cr->Field ." = '". $tr->{$cr->Field} ."' ". $WHERE ); $mr = mysql_fetch_object( $sql_math ); if( $mr->commission > 0 ) { ${$cr->Field}[$i]['name'] = $dr->list_replace; ${$cr->Field}[$i]['commission'] = $mr->commission; } } $i++; } } ${$cr->Field} = orderBy( ${$cr->Field}, 'commission' ); ${$cr->Field} = array_reverse( ${$cr->Field} ); foreach( ${$cr->Field} as $key => $value ) { echo '<option value="">'. $value['name'] .' => € '. number_format( $value['commission'], 2 ) .'</option>'; echo "\n"; } echo '</select>'; echo '</div>'; } } } |