Спустя 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 с чем-то (из последних)
Состав - одна строка выборки содержит 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. Почему тут не работает 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 (который неминуем) дал некоторую структуру, с которой потом можно работать, не обращаясь к БД.
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, то какую тут структуру можно посоветовать? Массив ассоциативных массивов и функции сортировки по нему.
Всё же, думаю гораздо эффективнее решать это 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 написал(а):
Все сделал, спасибо за помощь.
_____________