soyouthink
04-01-2014, 07:02
ok. basicly: when you run this query over php, mysql parse query each time. but in procedure it cache the query. this point is just an extra optimization its not about what you ask.
Optimization for what you ask is this:
i wrote this on fly. didnt test so it may have some simple comma mistakes etc.
Optimization for what you ask is this:
Code:
CREATE PROCEDURE `SP_MOVIE_GET`( IN t_id VARCHAR(20) ) BEGIN IF(SUBSTRING(t_id, 1, 2 ) = 'tt')THEN SELECT *, IFNULL(SUM(likes.vote), 0) AS likecount FROM movie_images img LEFT JOIN movie_items item ON item.movie_tmdb_id = img.image_movie_tmdb_id LEFT JOIN fanart_types ON type_id = image_type LEFT JOIN fanart_image_like likes ON likes.like_image_id = img.image_id and likes.type = '3' WHERE item.movie_imdb_id = t_id AND img.image_active = 'y' GROUP BY img.image_id ORDER BY likecount DESC; ELSE SELECT *, IFNULL(SUM(likes.vote), 0) AS likecount FROM movie_images img LEFT JOIN movie_items item ON item.movie_tmdb_id = img.image_movie_tmdb_id LEFT JOIN fanart_types ON type_id = image_type LEFT JOIN fanart_image_like likes ON likes.like_image_id = img.image_id and likes.type = '3' WHERE img.image_movie_tmdb_id = t_id AND img.image_active = 'y' GROUP BY img.image_id ORDER BY likecount DESC; END IF; END