select SQL_CALC_FOUND_ROWS DISTINCT media.*, username
from album as album, album_permission as permission, user as user, media as media , word_tag as word_tag, tag as tag
where ((media.album_id = album.album_id and album.private = 'yes' and album.album_id = permission.album_id and (permission.email = '' or permission.user_id = '')) or (media.album_id = album.album_id and album.private = 'no') or media.album_id = '0')
and media.status = '1'
and media.user_id = user.user_id
and word_tag.media_id = media.media_id
and word_tag.tag_id = tag.tag_id
and tag.name in ('justin','bieber','malfunction','katherine','heigl','wardrobe','cinetube') and media.media_type = 'video'
and media.media_id not in ('YHL6a5z8MV4')
group by media.media_id
order by RAND()
#there is limit too, by 20 rows..
Я не знаю, с чего начать объяснять этот вопрос, но, пожалуйста, простите меня и спросите, есть ли у вас какие-либо вопросы. нижеследующий - описание.Сложный процесс создания запроса чрезвычайно медленный
SQL_CALC_FOUND_ROWS вычисляет, сколько строк существует и будет использоваться для разбивки на страницы, поэтому оно учитывает общие записи, даже пока показывается только 20.
DISTINCT остановит повторную строку для отображения.
имя пользователя из таблицы пользователя.
альбом, альбом_передача. его проверка, если альбом является приватным, и если это так, тогда проверьте, имеет ли пользователь разрешение, user_id.
Я думаю, что отдых легко понять, но если вам нужно больше узнать об этом, пожалуйста, спросите.
im действительно разочарован этим запросом, и сайт очень медленный или не открывающий иногда причину этого запроса. пожалуйста, помогите
SQL query: EXPLAIN select SQL_CALC_FOUND_ROWS DISTINCT media.*, username from album as album, album_permission as permission, user as user, media as media , word_tag as word_tag, tag as tag where ((media.album_id = album.album_id and album.private = 'yes' and album.album_id = permission.album_id and (permission.email = '' or permission.user_id = '')) or (media.album_id = album.album_id and album.private = 'no') or media.album_id = '0') and media.status = '1' and media.user_id = user.user_id and word_tag.media_id = media.media_id and word_tag.tag_id = tag.tag_id and tag.name in ('justin','bieber','malfunction','katherine','heigl','wardrobe','cinetube') and media.media_type = 'video' and media.media_id not in ('YHL6a5z8MV4') group by media.media_id order by RAND() ;
Rows: 6
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE permission system album_id NULL NULL NULL 1 Using temporary; Using filesort
1 SIMPLE album ALL PRIMARY NULL NULL NULL 68
1 SIMPLE word_tag ALL media_id NULL NULL NULL 88383 Using where; Using join buffer
1 SIMPLE media eq_ref media_id,album_id media_id 34 _site.word_tag.media_id 1 Using where
1 SIMPLE tag eq_ref PRIMARY PRIMARY 4 _site.word_tag.tag_id 1 Using where
1 SIMPLE user eq_ref PRIMARY PRIMARY 34 _site.media.user_id 1
структуру таблицы http://pastie.org/912388 Эта ссылка таблицы дамп, который вы можете сделать в PHPMyAdmin или запустить его и посмотреть структуру таблиц.
Невозможно дать конкретную помощь, основанную на том, что вы сказали до сих пор. У вас есть соответствующие индексы на таблицах альбом, альбом_переход, пользователь, медиа, word_tag, тег? –
Я добавил объяснение, помогает ли это? – Basit
Я также добавил ссылку на структуру таблицы – Basit