[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Структура для хранения выборки
Daess
Есть выборка из двух баз данных, выбираемых данных достаточно много, работает все достаточно медленно (т.е. нельзя выбирать несколько раз). Выбирается эта кипа, потом отображается. Пользователь должен мочь отсортировать все по своему желанию (по выбранному столбцу). Простой ORDER BY не прокатит, ибо связь таблиц очень сложная и будет очень долго работать подобный механизм, т.е. напрашивается решение - создать некую структуру данных, в которую будет помещаться вся выбранная первым входом информация, и все манипуляции уже производить над этой структурой. Вопрос: какую структуру выбрать, учитывая что данные весьма разнотипные (числа, даты, строки)? Возможно стоит использовать массив, преобразовав все данные в строки.... В общем посоветуйте как лучше разрулить данную ситуацию.



Спустя 27 минут, 32 секунды (14.01.2008 - 17:52) vasa_c написал(а):
Подробнее и конкретнее.

Спустя 29 минут, 35 секунд (14.01.2008 - 18:21) Daess написал(а):
Цель - удобная незатратная по времени сортировка выборки данных
Состав - одна строка выборки содержит 14 полей различных типов (дата, числа, строки), размер выборки - от 400 строк
Данные - лежат в двух базах, на разных серверах, из-за неудачного проектирования (не мое!), данные очень сложно связать друг с другом, поэтому а) первоначальная выборка длится довольно долго б) не представляется возможным отсортировать данные используя ORDER BY

MySQL 5, PHP 5, Apache 2 с чем-то (из последних)

Спустя 2 часа, 49 минут, 26 секунд (14.01.2008 - 21:11) vasa_c написал(а):
Итак, выбирается что-то очень сложно, но в итоге получается набор строк из 14 полей и по одному полю нужно отсортировать.
1. Почему тут не работает ORDER BY?
2. Зачем нужна первая выборка?

Спустя 1 час, 16 минут, 51 секунда (14.01.2008 - 22:27) Daess написал(а):
Наверное надо немного пояснить. Поэтапно:

1) в зависимости от выбранной пользователем группы, выбирается некоторый исходный набор данных, по которому будет формироваться выборка (пусть это будет "номер"). Набор простой, состоит из столбца одной из таблиц, выбранному по некоторому признаку.

2) по выбранным "номерам" формируется часть интересующей нас выборки, та, которую можно достать с первой базы

3) из "номера" формируется название таблицы, содержащейся во второй базе, и из этой таблицы выбираются остальные данные для выборки

Т.е., если я захочу отсортировать данные, например, по некоторому полю из этапа 2), то мне придется сделать ORDER BY по этому полю, затем выяснить, в каком порядке должны идти "номера" для того, чтобы сделать отвечающую сортировке выборку для этапа 3).

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

Спустя 12 часов, 55 минут, 52 секунды (15.01.2008 - 11:23) vasa_c написал(а):
Да, структура, это пц.
Всё же, думаю гораздо эффективнее решать это SQL-средствами.
Либо в промежуточную таблицу выбирать и её сортировать.
Либо, если более-менее новая версия mysql задействовать хранимые процедуры.
Более конкретно на этих данных тут ничего не скажешь.
Думаю 1-2 можно объеденить в один запрос с вложенным.

Ну а если всё же есть желание делать это именно в PHP, то какую тут структуру можно посоветовать? Массив ассоциативных массивов и функции сортировки по нему.

Спустя 6 часов, 25 минут, 40 секунд (15.01.2008 - 17:49) Daess написал(а):
Цитата
Массив ассоциативных массивов и функции сортировки по нему.
Самое первое, что пришло в голову, думал может еще что можно придумать...
Цитата
Либо в промежуточную таблицу выбирать и её сортировать.
Насчет этого тоже думал, возможно стоит попробовать.
Цитата
Думаю 1-2 можно объеденить в один запрос с вложенным.
Надо попробовать....

Спасибо.

Спустя 1 день, 23 часа, 38 минут, 1 секунда (17.01.2008 - 17:27) Daess написал(а):
Все сделал, спасибо за помощь.


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.