Заказать иерархические данные в алфавитном порядке? (У меня есть рабочий запрос, который тоже можно оптимизировать)

Хорошо, я посмотрел ВЕЗДЕ о том, как сортировать / упорядочивать иерархические данные с каким-то произвольным значением, например, по алфавиту, наибольшим голосам и т. Д. Есть ли у кого-нибудь из вас решения для вложенного набора или чего-то еще?

Вот пара примеров запросов, которые парень сделал на reddit в моей ветке, и я добавил (объединение множества выборок .. help?):

http://sqlfiddle.com/#!9/6dd457/10 — в алфавитном порядке и все еще в порядке
http://sqlfiddle.com/#!9/786d89/36 — сначала в порядке наибольших голосов

Это списки смежности в основе, и mysql создает материализованный путь на основе вашего параметра сортировки на лету. Это будет генерироваться каждый раз, когда кто-то переходит на viewtopic.php, так как у каждого пользователя есть своя собственная сортировка.

Теперь есть несколько проблем с этим подходом. Во-первых, просмотр всех этих отборов и соединений заставляет меня немного волноваться. Я предполагаю, что есть намного более оптимизированный способ сделать все это.

Php может использоваться для определения наивысшего значения родительского узла, количества слоев, которые мы хотим сгенерировать из этого, и форматирования некоторых других вещей, но здесь есть проблема с этим дерьмом:

(1000 — l1.TotalVotes) + (2 * l1.Negatives) — необходимо повторить как 5 раз во всем запросе

Я пытался сделать ((1000 — l1.TotalVotes) + (2 * l1.Negatives)) AS l1.Votes в его уважаемом запросе на выбор, но я получил ошибку: / это был бы один шаг к тому, чтобы сделать его чище.

Моя конечная цель состоит в том, чтобы сделать запрос, который мог бы сортировать в нужном мне порядке, поэтому я могу просто использовать шаблоны с информацией о глубине для генерации HTML, не используя php больше, чем мне нужно, видя, как SQL больше эффективный и предназначен для такого рода вещей. Меня больше всего беспокоит, что подобный запрос будет плохим для крупных сайтов.

Конечная цель состоит в том, чтобы иметь что-то такое же быстрое, как reddit: вложенные комментарии с возможностью сортировки по дате публикации, общему количеству голосов и некоторым другим параметрам, используя как можно больше mysql и как можно меньше php. Если у вас есть какие-либо решения для этого с использованием таблиц замыкания, вложенных множеств или просто материализованных путей, я бы хотел их услышать. Решение, которое я здесь имею, выглядит оптимизированным и пугающим.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]