2015-03-16 8 views
1

Для моего мобильного приложения Я использую веб-службу, чтобы получить изображения и все записи из базы данных MySQL, например Instagram.MySQL SELECT отличается очень медленным

Но SELECT DISTINCT занимает более 7-8 секунд. Есть ли что-нибудь, что я могу сделать для сокращения времени?

SELECT distinct count(*) as totalrecord ,p.description,p.photo_id ,p.user_id,p.imagepath1 ,p.friends, p.is_report_photo, 
    p.imagepath2,p.imagepath3,p.imagepath4,p.imagepath5,p.count_comment,p.count_like,p.created as photo_created , 

    (select username from users where id = p.user_id) as username , 
    (select country from users where id = p.user_id) as country, 
    (select email from users where id = p.user_id) as email , 
    (select image_path from users where id = p.user_id) as image_path , 
    (select gender from users where id = p.user_id) as gender, 
    (select privacy from users where id = p.user_id) as privacy, 
    (select audio_privacy from users where id = p.user_id) as audio_privacy, 
    (select video_privacy from users where id = p.user_id) as video_privacy, 
    (select photo_privacy from users where id = p.user_id) as photo_privacy, 

    If(pl.user_id && pl.photo_id !='',like_status,0) as islike , 
    If(pr.user_id && pr.photo_id !='',1,0) as isreport, 
    p.user_visibility 

    from friends as fr 
    inner join users as u on u.id = (select distinct if (fr.user_id != $user_id,fr.user_id,(fr.to_user_id)) as rd 
    from friends) && fr.read_status = '1' 
    inner join photos as p on (p.user_visibility = 'p') 
    LEFT JOIN photolike as pl ON pl.photo_id = p.photo_id && pl.user_id = $user_id 
    LEFT JOIN photo_report as pr on pl. photo_id = pr.photo_id && pr.user_id = $user_id  
    ORDER BY p.photo_id DESC; 
+0

вы делаете подзапрос в каждом из полей и записей ..? – check

+0

Да, я их использую – arshadzackeriya

+0

Я предлагаю переписать ваш запрос с помощью соединений, а не subQuery в каждом поле. Если вы используете subQuery, ваш запрос будет выполнять этот подзапрос в каждой записи выборки. и это будет происходить медленнее. – check

ответ

Смежные вопросы