:私は最初の文を削除すると最適化SQLクエリPHPのPhalcon
if(($banners = $this->app->cache5min->get($key_cache)) === NULL) {
$find_items = array();
$banners = $this->app->db->fetchAll("
SELECT b.id,b.active, b.richmedia, b.rich_position, b.ip_limit,
b.cookie_limit, b.cookie_interval, b.day_limit, b.limit_interval,
b.frequency, b.close_btn, b.use_geo,
bpl.s_x, bpl.s_y
FROM bs_items_places AS bp
LEFT JOIN bs_items AS b ON b.id = bp.item_id
LEFT JOIN bs_places AS bpl ON bpl.id = bp.place_id
WHERE b.active = 1
AND b.date_start < '".$dateNow."'
AND b.date_stop > '".$dateNow."'
AND bpl.active = 1
AND bp.place_id = {$idpl}
AND (IF((time_from!='00:00:00' AND time_to!='00:00:00'),
(time_from<='".$dateTimeNow."'
AND time_to >='".$dateTimeNow."'), 1)
)
GROUP BY b.id
ORDER BY b.frequency DESC, b.day_limit DESC
");
foreach($banners AS $bnr) {
$find_items[$bnr['id']] = $bnr;
}
$banners = $find_items;
$this->app->cache5min->save($key_cache,$banners);
}
//echo '<pre>'; print_r($banners); exit;
if(!$banners || !count($banners)) { return $this->getDefaultBanner($idpl,$x); }
、私は最初の文を返すとき、私のCPUが100%、私のCPU良好であり、これはMySQLのproccessを与え、どのように私ができます選択クエリを最適化しますか?
まず、あなたはそれを人間が読みやすくする必要があります。しかし、私はすでにあなたが用意したステートメントを使用していないことを伝えることができます。つまり、潜在的なSQLインジェクションの脆弱性が存在することを意味します。 –
私はCPU負荷を修正する必要があります – GodmanT
各カラムがどのテーブルにあるかを知らずに、特に 'time_from'と' time_to'です。 –