У меня небольшая проблема с некоторыми поздними добавлениями в проект, 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, что выше, но не будет выглядеть выше в первом роде.
У меня полный доступ к базе данных и коду. У кого-нибудь есть советы о том, как достичь такого рода практичности, не снижая производительность?
Приветствия Все