CC-4620: Now Playing page loading is very slow because 1M records in cc_schedule table

-fixed
This commit is contained in:
Martin Konecny 2012-10-23 17:45:55 -04:00
parent a73aef6cd8
commit 4daaa776e2
2 changed files with 28 additions and 20 deletions

View File

@ -263,6 +263,15 @@ SQL;
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$p_start_str = $p_start->format("Y-m-d H:i:s");
$p_end_str = $p_end->format("Y-m-d H:i:s");
//We need to search 24 hours before and after the show times so that that we
//capture all of the show's contents.
$p_track_start= $p_start->sub(new DateInterval("PT24H"))->format("Y-m-d H:i:s");
$p_track_end = $p_end->add(new DateInterval("PT24H"))->format("Y-m-d H:i:s");
$templateSql = <<<SQL $templateSql = <<<SQL
SELECT DISTINCT sched.starts AS sched_starts, SELECT DISTINCT sched.starts AS sched_starts,
sched.ends AS sched_ends, sched.ends AS sched_ends,
@ -288,12 +297,12 @@ SQL;
$filesJoin = <<<SQL $filesJoin = <<<SQL
cc_schedule AS sched cc_schedule AS sched
JOIN cc_files AS ft ON (sched.file_id = ft.id JOIN cc_files AS ft ON (sched.file_id = ft.id
AND ((sched.starts >= '{$p_start}' AND ((sched.starts >= '{$p_track_start}'
AND sched.starts < '{$p_end}') AND sched.starts < '{$p_track_end}')
OR (sched.ends > '{$p_start}' OR (sched.ends > '{$p_track_start}'
AND sched.ends <= '{$p_end}') AND sched.ends <= '{$p_track_end}')
OR (sched.starts <= '{$p_start}' OR (sched.starts <= '{$p_track_start}'
AND sched.ends >= '{$p_end}')) AND sched.ends >= '{$p_track_end}'))
) )
SQL; SQL;
@ -315,12 +324,12 @@ SQL;
$streamJoin = <<<SQL $streamJoin = <<<SQL
cc_schedule AS sched cc_schedule AS sched
JOIN cc_webstream AS ws ON (sched.stream_id = ws.id JOIN cc_webstream AS ws ON (sched.stream_id = ws.id
AND ((sched.starts >= '{$p_start}' AND ((sched.starts >= '{$p_track_start}'
AND sched.starts < '{$p_end}') AND sched.starts < '{$p_track_end}')
OR (sched.ends > '{$p_start}' OR (sched.ends > '{$p_track_start}'
AND sched.ends <= '{$p_end}') AND sched.ends <= '{$p_track_end}')
OR (sched.starts <= '{$p_start}' OR (sched.starts <= '{$p_track_start}'
AND sched.ends >= '{$p_end}')) AND sched.ends >= '{$p_track_end}'))
) )
LEFT JOIN cc_subjs AS sub ON (ws.creator_id = sub.id) LEFT JOIN cc_subjs AS sub ON (ws.creator_id = sub.id)
SQL; SQL;
@ -358,12 +367,12 @@ SELECT showt.name AS show_name,
JOIN cc_show AS showt ON (showt.id = si.show_id) JOIN cc_show AS showt ON (showt.id = si.show_id)
WHERE si.modified_instance = FALSE WHERE si.modified_instance = FALSE
$showPredicate $showPredicate
AND ((si.starts >= '{$p_start}' AND ((si.starts >= '{$p_start_str}'
AND si.starts < '{$p_end}') AND si.starts < '{$p_end_str}')
OR (si.ends > '{$p_start}' OR (si.ends > '{$p_start_str}'
AND si.ends <= '{$p_end}') AND si.ends <= '{$p_end_str}')
OR (si.starts <= '{$p_start}' OR (si.starts <= '{$p_start_str}'
AND si.ends >= '{$p_end}')) AND si.ends >= '{$p_end_str}'))
ORDER BY si_starts, ORDER BY si_starts,
sched_starts; sched_starts;
SQL; SQL;

View File

@ -423,8 +423,7 @@ class Application_Model_ShowBuilder
} }
$scheduled_items = Application_Model_Schedule::GetScheduleDetailItems( $scheduled_items = Application_Model_Schedule::GetScheduleDetailItems(
$this->startDT->format("Y-m-d H:i:s"), $this->endDT->format( $this->startDT, $this->endDT, $shows);
"Y-m-d H:i:s"), $shows);
for ($i = 0, $rows = count($scheduled_items); $i < $rows; $i++) { for ($i = 0, $rows = count($scheduled_items); $i < $rows; $i++) {