- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В общем практически закончил свой форум и сейчас просматриваю запросы и заметил один момент на который сразу не обратил внимание, и как мне показалось такой метод вывода из базы может создать или даже думаю будет создавать нагрузку на сервер.
Вот запрос, скопируйте если не лень в редактор ато тут еси обрамляю код в php - часть кода превращается в звездочки и цифры.
$sql = mysql_query('SELECT * FROM questions WHERE parent="'.$f.'"',$db);
while($row=mysql_fetch_array($sql)){
$id_ques=$row['id_ques'];
$header=$row['header'];
?>
<a href="dialog.php?id_ques=<?php echo $id_ques; ?>"><?php echo $header; ?></a>
<?
$res = mysql_query('SELECT COUNT(*) FROM answers WHERE parent="'.$id_ques.'"',$db);
$row = mysql_fetch_row($res);
$total = $row[0]; // всего записей
echo $total;
?>
<?php
}
?>
То есть получается я вывожу айди вопроса и заголовок, затем выхожу из php (но находясь в цикле) и запускаю подсчет и вывод ответов на вопросы из другой таблицы, таким образом выходит, что если я вывожу 30 тем на страницу, то запрос
$res = mysql_query('SELECT COUNT(*) FROM answers WHERE parent="'.$id_ques.'"',$db);
?>
Будет выполнятся 30 раз, 30 обращений к базе данных, можно ли както упростить или сделать по другому?
Я думаю что можно вывести из двух таблиц в одном запросе но как это сделать не знаю, а точнее как отделить переменные из одной таблицы и из другой.
или даже думаю будет создавать нагрузку на сервер.
так проверить можно... заполнить lorem-lorem и погонять... ab, например.
Я думаю что можно вывести из двух таблиц в одном запросе но как это сделать не знаю,
Можно... см Join
а точнее как отделить переменные из одной таблицы и из другой.
Именем таблицы через точку
p.s. всё это в документациях имеется... и в коде движков.. (вы ведь просмотрели-изучили, прежде чем своё писать?)
Zion-i2, во первых у вас наверное должны быть какие-то лимиты в запросе с questions
во вторых статистику обычно принято вести в одной таблице, что-бы не делать такие запросы.
SELECT q.*, COUNT(*) as count FROM questions q LEFT JOIN answers a ON a.parent=q.id_ques GROUP BY q.id_ques
но по моему этот запрос не очень оптимален, так как создается большая таблица
SELECT q.*, (SELECT COUNT(*) FROM answers WHERE parent=id_ques) as count FROM questions q
Еще вариант.
Удобно ставить условия и делать сортировку, запрос будет выполнятся очень быстро даже на сотни тысяч записей.
SELECT q.*, z.count FROM questions q INNER JOIN (SELECT q.id_ques, COUNT(*) as count FROM questions q LEFT JOIN answers a ON a.parent=q.id_ques WHERE q.parent={$f} GROUP BY q.id_ques ORDER BY a.post_date DESC LIMIT 0,10) z ON z.id_ques=q.id_ques
a.post_date - дата поста
LIMIT 0,10 - количество тем на странице
Все! тема не актуальна, спасибо siv1987 - помог решить задачу, как говорится все гинеальное просто!