Пользователи проходят тест, состоящего из 40 вопросов у которого НЕТ ПРАВИЛЬНОГО ответа, сохраняются просто варианты ответов. Вопросы с один вариантом ответа. Кол-во пользователей прошедших тест (кол-во результатов) может быть десятки тысяч. Каждый новый пользователь проходит тест, а результат заносится в таблицу (т.е. со временем появляются новые).
Пользователь добавил свой результат, который нужно сравнить с другими результатами и вывеси таблицу с сортировкой от лучшего к худшему (наиболее подходящему). Как оптимально с точки зрения производительности решить эту задачу?
Важно! Каждый новый пользователь со свои результатом - это эталон правильных ответов по отношению к другим.
Вариант 1 (неудачный). Создать таблицу со 40 свойствами. Заполним ее 10000 записями (к примеру). Далее выбираем одну из записей и сравниваем ее с остальными. Т.е. будет фильтр по записям (полям записи). В этом варианте будут выбраны только точно совпавшие записи и не будет возможности построить таблицу с сортировкой от лучшего к худшему.
Вариант 2 (неудачный). Через цикл открывать каждую запись и сравнивать свойства, создавая новый массив для построения таблицы. Но записей много и сервер загнется.
Как оптимально с точки зрения производительности, взять один из результатов теста и сравнить его с другими результатами, построил таблицу с сортировкой от лучшего к худшему
Тут не совсем понятно, чего вы хотите добиться?
Есть новый результат пользователя. Есть результаты предыдущих пользователей. Результат добавляется в таблицу.
Что дальше?
Konata Izumi, пользователь добавил свой результат, который нужно сравнить с другими результатами и вывеси таблицу с сортировкой от лучшего к худшему (наиболее подходящему).
Konata Izumi, +1.
И не нужно ставить "сложный" вопрос. У вас явная проблема в ТЗ. Сформулируейте его правильно, и вопросы по реализации сами собой отпадут.
Diversia, Я думал, у вас есть таблица или колонка с итоговой суммой баллов за тест. По ней и сортировать.
А так вы пытаетесь сортировать по 40 колонкам?
Konata Izumi, эталон - это правильный вариант относительно других записей. Т.е. я ответил на вопросы и хочу найти таких же пользователей как и я сам. Наиболее подходящих.