Работа с готовым списком id записей для вывода

shiko

Guest
Работа с готовым списком id записей для вывода

1)Как правильно работать с большим списком id записей. Т.е. на пхп получаю уже готовый список id записей, которые надо получить из базы. Сейчас использую WHERE id IN()

2) Вытекает из первого. IN() сортирует аргументы по возрастанию. Как можно заставить мускул выводить записи в заданном порядке без ORDER BY. Т.е. есть уже отсортированный список id.

-~{}~ 23.06.05 12:09:

Неужели нету никаких решений??
 

lucas

Guest
PHP:
Сложи строки, полученные из БД, в массив, где индекс -- id записи.
Сложи свои id в массив в нужном порядке.
Дальше -- дело техники: воспользуйся сортировкой.

БД:
Сложи id во временную таблицу (которая, кстати, может уже существовать: см. пост Фаната) с auto_increment'ом.
Выбери записи в нужном порядке с join'ом и order by.
 

shiko

Guest
lucas
Т.е. без дополнительных конструкций типа order by не получится


Фанат
Из базы, только текстовой

Просто получается, что все то преимущество, которое я получил, используя тексовую базу, теперь потратится на сортировку в запросе
 

Фанат

oncle terrible
Команда форума
не понял. какие такие преимущества?
загадками говорить изволите?
 

shiko

Guest
Так в скорости преимущества
это я пытаюсь поиск с учетом морфологии сделать
получается действительно быстрее с файлами (где лежат списки id для каждой формы слова)
так вот если не учитывать местонахождение слова в тексте - можно и не сортировать. загнал все в WHERE IN () и получил данные, а если учитывать то надо сортировать
попробовал сортировать в запросе (с ORDER BY) - все преимущество растерял
теперь подумал, если хранить в файле уже отсортированные списки id - значит я выигрываю, да вот только проблема: IN() без моего разрешения сортирует уже отсортированное
 

ForJest

- свежая кровь
shiko
Запихай их во временную таблицу и делай джоин.
 

Фанат

oncle terrible
Команда форума
он потеряет все преимущества текстовых файлов
 

shiko

Guest
Фанат
что не так?

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