Иерархическая система комментариев в резьбовом режиме: php и mysql -- php поле с участием mysql поле с участием hierarchy поле с участием comments пол Связанный проблема

Hierarchical commenting system in threaded view: PHP and MySQL


1
vote

проблема

русский

У меня есть необходимость оказать резьбовое изображение 2-уровневых иерархических комментариев системы. Комментарии хранятся в базе данных. Информация о иерархии задается полем «Parent_ID» (которая 0 для комментариев верхнего уровня). Я не могу изменить структуру базы данных. Настоящее решение с помощью нескольких запросов SQL:

  1. Запрос SQL выполняется для получения всех комментариев верхнего уровня
  2. Кодовые циклы через комментарии верхнего уровня, и для каждого из них выполняет запрос SQL для получения своих детей

Теперь мне интересно, если решение только с одним запросом SQL для получения всех комментариев, поскольку они сопровождаются кодом, предложили здесь для того, чтобы отсортировать их по темам может быть более эффективным. Любая рекомендация?

Спасибо, Luciano

Английский оригинал

I have the need to render a threaded view of a 2-levels hierarchical commenting system. The comments are stored in a database. The information about the hierarchy is given by field 'parent_id' (which is 0 for the top-level comments). I cannot change the structure of the database. The present solution is by means of multiple SQL queries:

  1. an SQL query is performed to fetch all top-level comments
  2. the code loops through the top-level comments and for each of them performs an SQL query to fetch its children

Now I wonder if a solution with only one SQL query to fetch all the comments as they are followed by the code suggested here to sort them by threads could be more efficient. Any reccomendation?

Thanks, Luciano

</div
           
 
 

Список ответов

0
 
vote

Я сделал подобные скрипты и с моей точки зрения, лучше сделать первый запрос, чтобы получить все «родители» (parent_id == 0), а затем для каждого из них выполняют еще один запрос, чтобы получить все это Сыновья информация.

Если вы должны получить огромную амматус угроз, используя единственный запрос, вы должны ждать, пока запрос будет выполняться для работы с данными. Если вы разделите поиск в разных и меньших запросах, вы можете начать формироваться и печатать их перед поиском «сыновей». Также это в одном запросе может сделать запрос медленнее, поскольку использование большего количества таблиц в том же запросе может сделать его остановку из-за Lock_Table, когда кто-то создает новую угрозу.

Другое решение, которое я бы только рекомендовал, если запрос очень медленнее из-за того, чтобы быть вынужденным использовать несколько соединений или использование, где с неиндерамическими полями (вы никогда не должны делать это, но если вы не можете изменить базу данных. ..), состоит в том, чтобы извлечь все угрозы в одном запросе (как родителей, так и сыновьях, без каких-либо из тех, где или присоединяются, что делает запрос медленнее), а затем организовать их с помощью PHP. Это ни в коем случае не практично, и вы никогда не должны использовать этот метод, если время для завершения запроса очень длинный.

 

I've done similar scripts and from my point of view it's better to do a first query to fetch all the 'parents' (parent_id==0) and then for each one of them do another query to get all its 'sons' information.

If you have to retrieve a HUGE ammount of threats using a single query you have to wait for the query to complete to work with the data. If you divide the search in different and smaller queries you can start formating and printing them before looking for the 'sons'. Also doing it in a single query could make the query slower since using more tables in the same query could make it halt due to a lock_table when someone is creating a new threat.

Another solution, which I would only recommend if the query is very slow due to being forced to use multiple JOINs or using WHERE with non-indexed fields (you should never do that, but if you can't change the database...), is to retrieve ALL the threats in a single query (both parents and sons, without any of those WHERE or JOIN that makes the query slower) and then organize them using PHP. This is by no means practical, and you should never use this method unless the time to complete the query is very long.

</div
 
 

Связанный проблема

0  Как я могу получить ответ JSON обратно (PHP)  ( How can i get json response back php ) 
Я сталкиваюсь с проблемой с ответом сервера. Моя цель состоит в том, чтобы отправить некоторые данные на сервер и получить некоторые ответы с учетом отправлен...

1  Заказ в порядке без использования событий  ( Order in order without using events ) 
Моя таблица MySQL имеет следующую структуру: <код> +------+----------+-----+-----------+----------------+----------+ | uuid | username | ... | clan_rank | u...

0  Yii2 - Есть ли способ написать основные символы в модели поиска и результаты показывают все запросы как базовыми, так и специальными символами?  ( Yii2 is there a way to write basic characters in search model and results show ) 
Просто сказать это сначала, я относительно новый в Yii2, так что спасибо за понимание. Я использую Mariadb Database Engine. Например, в QueryParams я писа...

0  Добавление поля в запросе MySQL  ( Adding a field in a mysql query ) 
Мне нужно добавить поле в одном из наших запросов. Я NT PHP-программист купил, я немного ударил. Запрос: <код> if (_QUERYSTRING_) { switch ($intMode) { ...

2  Laravel 5.2 Hasthrough  ( Laravel 5 2 hasthrough ) 
Так что я пытаюсь получить доступ к пользователям заметки по их аккаунтам. В основном Notes не принадлежат пользователю, они принадлежат к учетной записи, в к...

13  Отправьте данные FORM HTML в базу данных SQL через PHP (используя mysqli)  ( Send html form data to sql database via php using mysqli ) 
Я хочу отправить данные, введенные в HTML-форму в мою базу данных SQL, то есть создайте новую строку, приписываю определенные значения в определенные столбцы....

1  Уменьшите часы экземпляра CloudsQL (WordPress)  ( Reduce cloudsql instance hours wordpress ) 
У меня есть установка WordPress на GAE. Это веб-сайт, который будет очень редко обновлен, и будет иметь мало посетителей каждый день (100 ish max). Я хотел бы...

0  Я хочу получить изображение, удивляемые в PHP, нажав кнопку «Отправить», когда я пробую приведенный ниже код, получая ошибку для ISSET [Закрыто]  ( I want to get the image cordinates in php on clicking the submit button when i ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыто. Этот вопрос не воспроизводится или был вызван опечаткам...

0  Создание копии Symfony Project на сервере?  ( Making a copy of symfony project on server ) 
Я пытаюсь скопировать существующий проект Symfony в другой каталог, поэтому я могу проверить изменения, прежде чем применять их в живую версию. Я получаю ош...

1  Передайте переменную из исходного файла в включенный файл в PHP  ( Pass a variable from the source file to an included file in php ) 
Для моего сайта я хочу хранить общий формат сайта в одном файле PHP в одном месте, и каждый из разных страниц содержимого в местном месте страницы. Затем я хо...

0  Google Map не отображает  ( Google map not displaying ) 
У меня есть карта Google, которая используется здесь: http://www.comehike.com/outdoors/birds/birds.php Теперь я вижу сообщения об ошибках .j для 1) Инициа...

-1  PHP Удалить окружающие пустые массивы из массива меню  ( Php remove surrounding empty arrays from menu array ) 
Привет, я пытаюсь построить лучшее динамическое меню, чем тот, который у меня в настоящее время использует массивы У меня нет проблем с удалением окружающих...

8  MySQL Заказ с использованием строки даты данных  ( Mysql order by using date data row ) 
У меня есть запрос что-то подобное: <код> public class AlarmReciever extends BroadcastReceiver { AlarmClock alarmClock=new AlarmClock(); @Override public v...

0  Mac Yosmite: Установите MacPorts Apache в качестве по умолчанию (Opt / local / apache2) на localhost, а не распределение OSX  ( Mac yosmite set macports apache as default opt local apache2 on localhost rat ) 
Я установил Apache через MACPPORTS, он работал нормально, но вдруг по какой-то причине он переключился на использование распределения OSX по умолчанию Apache,...

1  Размер базы данных для календаря событий  ( Database size for an event calendar ) 
Я делаю проект на календаре событий, используя PHP и MySQL. У меня есть сомнение, что, когда мы стараемся включить события в каждый час в каждый день, он де...

Связанный проблема

0  Как я могу получить ответ JSON обратно (PHP) 
1  Заказ в порядке без использования событий 
0  Yii2 - Есть ли способ написать основные символы в модели поиска и результаты показывают все запросы как базовыми, так и специальными символами? 
0  Добавление поля в запросе MySQL 
2  Laravel 5.2 Hasthrough 
13  Отправьте данные FORM HTML в базу данных SQL через PHP (используя mysqli) 
1  Уменьшите часы экземпляра CloudsQL (WordPress) 
0  Я хочу получить изображение, удивляемые в PHP, нажав кнопку «Отправить», когда я пробую приведенный ниже код, получая ошибку для ISSET [Закрыто] 
0  Создание копии Symfony Project на сервере? 
1  Передайте переменную из исходного файла в включенный файл в PHP 
0  Google Map не отображает 
-1  PHP Удалить окружающие пустые массивы из массива меню 
8  MySQL Заказ с использованием строки даты данных 
0  Mac Yosmite: Установите MacPorts Apache в качестве по умолчанию (Opt / local / apache2) на localhost, а не распределение OSX 
1  Размер базы данных для календаря событий 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.