[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка таблицы по нескольким полям
FatCat
Собственно, сама задача:
На разных серверах собирается однотипная информация, и затем сливается на один сервер, где производится сортировка.
Информация например такая:
| уровень опасности | IP-адрес | время выявления | сервер |
Приходит в виде массива строк с разделителями, на принимающем сервере массивы объединяются в один.
Требуется отсортировать по уровню опасности в порядке убывания.
Для каждого уровня опасности отсортировать айпишники по возрастанию.
Если одинаковый айпишник получен с разных серверов, отсортировать по времени выявления.

Пробовал делать циклами - ресурсы жрет нещадно; 3-4 тысячи строк обрабатываются до 30 секунд.

Сейчас думаю о забивке данных во временную таблицу SQL и дальше сортировками внутри SELECT, MySQL с такой задачей справится раз в 10 быстрее.

Но может у кого-то будут идеи по использованию функций сортировки массивов?



Спустя 29 минут, 38 секунд (27.02.2009 - 14:55) sergeiss написал(а):
Я не пробовал, но по описанию должно бы подходить следующее:

Цитата
array_multisort — Сортировать несколько массивов или многомерные массивы

Описание
bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] )
Функция array_multisort() может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной или несколькими размерностями. Эта функция сохраняет соответствие между ключами и соответствующими им значениями.

Входные массивы рассматриваются как столбцы таблицы, которую нужно отсортировать по строкам - такой подход напоминает поведение выражения SQL ORDER BY. Первый массив имеет проиоритет в процессе сортировки.
.....

Для каждого массива можно указывать свой порядок сортировки.

Спустя 23 часа, 4 минуты, 23 секунды (28.02.2009 - 13:59) FatCat написал(а):
sergeiss
Поковырялся, но не разобрался с синтаксисом.
Но в итоге нашел причину тормозов в цикле и устранил.
Тормозил stristr по таблице, ибо размер таблицы довольно большой; сделал stristr только по одному полю таблицы, и скорость работы скрипта стала вполне приемлемой.


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

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