- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
С юзером 3 вышла опечатка, Там должен быть юзер 3, я специально почистил базу что бы не выкладывать все 30000 юзеров. НЛО быть не может, юезра не удаляются, на крайняк отключаются.
За запрос спасибо, пока для меня темный лес, я бы не догадался, но , если судить по дампу, должны быть выведены talk_id по такой очередности 47 , 44, 42, 45, 39 в вашем же запросе 47 ,42, 45, 39, 44 - почему так хитро мне не понятно.
Miracle добавил 05.10.2009 в 01:36
Если Вам нужно Х последних комментариев, то нужно делать group by tc.comment_id.
если мне нужно Х последних комментариев то group by делать вообще не надо, а уж тем более не понимаю смысла group by tc.comment_id - это однозначно не имеет смысла :-) в любом случае.
Если Вы делаете group by talk_id, то Вы группируете выборку по блогам, и значения коммент_ид и автора в этой группе будут случайными. А сортировка включается не внутри группы, а уже по тем членам, которые были выбраны из группы случайно.
блогид комментид: 1 10, 1 5, 1 15.... 2 2, 2 12, 2 22. Ваша выборка даст кол-во строк столько, сколько есть блогов. Сначала мускул сгруппирует выборку по ИД блога, а в комментид попадет случайный представитель из группы (т.е. может попасть как 10 так и 15 так и 5 к блогид=1... и так же к блогид=2), а вот потом уже включится сортировка. Более того, если в коммент_ид у Вас выберется 10, то не факт что текст коммента в этой группе тоже будет относится к 10 комменту - он опять же будет случайным.
вот это вообще пока запутано для меня, на практике данные привязаны и пока я не понимаю как в поле с коммент_айди одним может быть текст из другого, да и в скрипте такого не наблюдается
Miracle добавил 05.10.2009 в 01:38
ребята, большое спасибо за то что помогаете.
а то надоело делать через попу :), хотя не факт что скрипт выше намного проще разбора всего этого на пхп :)
если мне нужно Х последних комментариев то group by делать вообще не надо
Ну как сформулировали:)
я не понимаю как в поле с коммент_айди одним может быть текст из другого
В Вашем первом запросе - легко. Попробуем проще объяснить выборку.
Действует группировка по talk_id. Соответственно в одной группе talk_id у Вас окажется допустим 20 разных comment_id и text_comment. И при выборке Вам мускул отдаст случайного представителя этих полей для каждой группы.
Miracle добавил 05.10.2009 в 01:38
ребята, большое спасибо за то что помогаете.
а то надоело делать через попу :), хотя не факт что скрипт выше намного проще разбора всего этого на пхп :)
Если Вам нужно по Х записей последних из каждого блога, то самый оптимальный вариант следующий - не извращаться с запросами. А сделать нечто вроде "кэширования". При постинге записи в блог, апдейтить таблицу с комментами. Выставляя 5 последним флажок "один из последних комментариев" (естественно с ограничением по полю соответствующего апдейтенного блога). Постинг вещь редкая - нагрузки особой не будет. Зато выборка будет простой как колумбово яйцо, просто по флагу.
пысы: и посмотрите все-таки /ru/forum/comment/5029477+join#post5029477 тут пример:) он может быть и не подойдет Вам 1 в 1, но именно в разрезе "х последних откуда-то" дает хорошую пищу для размышлений.
netwind, от человека только что ругавшего кого-то за использование лефт.джоина - нам удивительно видеть от Вас вложенные запросы:)
За запрос спасибо, пока для меня темный лес, я бы не догадался, но , если судить по дампу, должны быть выведены talk_id по такой очередности 47 , 44, 42, 45, 39 в вашем же запросе 47 ,42, 45, 39, 44 - почему так хитро мне не понятно.
а это я сортировку просмотрел. правильно так :
я, правда, опасаюсь за подзапрос. что-то он на этих данных вырождается в полный перебор.
netwind, солидарен с вашим запросом, но чуток упростим)
FROM
(
SELECT distinct talk_id, comment_id, user_id
FROM bt_talk_comment
WHERE comment_activity=1
order by comment_id DESC
LIMIT 5
) tc
LEFT JOIN bt_user u ON u.user_id = tc.user_id
LEFT JOIN bt_talk t ON t.talk_id = tc.talk_id
group by t.talk_id
order by comment_id desc
думаю что можно еще упростить ...
bearman добавил 05.10.2009 в 09:41
netwind, с подзапросом все нормально.
1 PRIMARY u eq_ref PRIMARY PRIMARY 4 tc.user_id 1
1 PRIMARY t eq_ref PRIMARY PRIMARY 4 tc.talk_id 1
2 DERIVED bt_talk_comment index PRIMARY 4 39 Using where
netwind, с подзапросом все нормально.
1 PRIMARY u eq_ref PRIMARY PRIMARY 4 tc.user_id 1
1 PRIMARY t eq_ref PRIMARY PRIMARY 4 tc.talk_id 1
2 DERIVED bt_talk_comment index PRIMARY 4 39 Using where
bearman, может быть внешний group by t.talk_id не обязателен. А то на дампе получается 3 записи всего.
Но тогда можно получить кучу комментов к одной и той же записи и такой блок на сайте не показывает разнообразия.
и еще на моей версии mysql подзапрос упорно игнорирует индекс. а у вас - планирует перебрать по индексу 39 записей.
netwind, аа незаметил что планирует ... ну смежный индекс проставить и не будет планировать я думаю)
Ребята всем спасибо. Отблагодарил всех кто более ли менее помог, некоторым не смог поставить, видимо недавно уже за что-то благодарил - тогда просто спасибо.
Пересматриваю свои знания по маэскуэль в свете новых полученных.
немного другой вопрос, но задам здесь
FROM forum_sessions s, forum_users u
WHERE s.session_id = '8d699e58183e97f2d06cb16dc9f6af93'
AND u.user_id = s.session_user_id
1 SIMPLE s const PRIMARY,session_user_id,session_id_ip_user_id PRIMARY 32 const 1
1 SIMPLE u const PRIMARY PRIMARY 3 const 1
запрос выполняется 14 секунд
загрузка процессора от маэскуэля до 50%
с чем может быть такое связано?
юзеров 11526
сессий 2141
спасибо.
Используйте JOIN при соединении таблиц :)