Optimizing random row selection.
Posted: Mon Feb 15, 2010 4:29 pm
The query's below often cause this error: Fatal error: Maximum execution time of 30 seconds exceeded in /home/autoEvent.php on line 228
This is the code causing the error:
What can I do to keep this loop from taking so many times. Can I do a select from where EVENT_ID NOT in array?
EDIT: I am trying this to with no success: mysql_query( " SELECT * FROM `event_categories_events` WHERE event_category_id = '2' && event_id NOT IN ('".implode(',', $chosen)."') LIMIT $offset, 1 " );
This is the code causing the error:
Code: Select all
//Select RANDOM EVENT (AGENT) TO ASSIGN TO DAY
$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `event_categories_events` WHERE event_category_id = '2' ") or die(mysql_error());
$offset_row = mysql_fetch_object( $offset_result );
$offset = $offset_row->offset;
$floor_events = mysql_query( " SELECT * FROM `event_categories_events` WHERE event_category_id = '2' LIMIT $offset, 1 " );
//Grab Random Event from All Events (Agents) Assigned To The Floor Schedule Category
while($grabFloorEvent = mysql_fetch_array($floor_events)){
//For every event id we grab, grab the event (agent) details.
$agent=$grabFloorEvent['event_id'];
while(in_array($agent, $_SESSION['used'])) {
while($grabFloorEvent = mysql_fetch_array($floor_events)){
$agent=$grabFloorEvent['event_id'];
break;
}
}EDIT: I am trying this to with no success: mysql_query( " SELECT * FROM `event_categories_events` WHERE event_category_id = '2' && event_id NOT IN ('".implode(',', $chosen)."') LIMIT $offset, 1 " );
Code: Select all
$chosen=$_SESSION['used'];
$floor_events = mysql_query( " SELECT * FROM `event_categories_events` WHERE event_category_id = '2' && event_id NOT IN ('".implode(',', $chosen)."') LIMIT $offset, 1 " );