Заказ Mysql по расчетному значению - определяемые пользователем веса категорий - PullRequest
1 голос
/ 03 октября 2009

У меня небольшая проблема с некоторыми поздними добавлениями в проект, mysql и PHP.

У нас есть таблица в mysql с 200 000 строк, каждая с назначенной категорией. Первоначально оператор select просто извлекал необходимые элементы на основе предложения where и порядка по индексируемому идентификатору. Очень быстро.

Однако у нас было несколько пользователей, которые запрашивали возможность давать весовые коэффициенты для каждой категории (т. Е. Финансовые = 60%, кредитные = 25%, страховые = 15%) и включать флажок, чтобы ухудшать результаты со временем, то есть оператор выбора Теперь необходимо вычислить значение (категория * взвешивание) и, если флажок включен (категория * взвешивание * 1 / дней) для каждого результата, возвращаемого предложением where. Затем он должен упорядочить по этому рассчитанному значению. Как вы можете себе представить, это медленно (~ 10 секунд) для каждого запроса.

Теперь я не уверен, что лучший способ продолжить здесь, так как я не уверен, как получить таблицу, содержащую эти вычисленные значения для индексации (потому что пользователь может выбрать любой вариант).

Также возникают проблемы, если вы попытаетесь упростить сортировку (упорядочить по весам, по дате), поскольку она явно отличается от (упорядочить по датированным весам) как 80% * cat * 1 / 8days = 0.1 и 20% * cat * 1 / 1day = 0,2, что выше, но не будет выглядеть выше в первом роде.

У меня полный доступ к базе данных и коду. У кого-нибудь есть советы о том, как достичь такого рода практичности, не снижая производительность?

Приветствия Все

1 Ответ

0 голосов
/ 03 октября 2009

Из вашего описания кажется, что критерии упорядочения могут быть разными для каждой строки в каждом запросе. Единственным вариантом может быть добавление большего количества оборудования в базу данных или использование другой базы данных.

РЕДАКТИРОВАТЬ: Если набор данных не обновляется часто, вы сможете определить часто используемые наборы параметров и индексы предварительного вычисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...