Я создаю приложение с угловым викторином с nodejs mysql в качестве backend. В таблице вопросов Quiz есть поля, такие как id, title, choice_a, choice_b..choice_d, subject_id fk, topic_id fk, rand1, rand2, rand3
порядок - либо id asc, id desc, rand1 asc, rand1 desc, rand2 asc, rand2 desc, rand3 asc, rand3 desc и т.д., чтобы рандомизировать порядок
Поля rand содержат значения от 1 до 20, назначенные случайным образом, чтобы дать случайную викторину
Мой вопрос касается запроса, как указано ниже
SELECT question.*,subject.title as subject_title,region.title as region_title,topic.title as topic_title FROM question LEFT JOIN subject ON
(question.subject_id = subject.id) LEFT JOIN region ON (question.region_id = region.id) LEFT JOIN topic ON (question.topic_id =
topic.id) WHERE ((question.subject_id = '4')) ORDER BY rand1 DESC LIMIT 20
здесь результаты фильтруются с использованием rand1 (назначаются случайным образом). Теперь я хочу знать, поможет ли добавление комбинированного индекса для (subject_id, rand1)?
Если это произойдет, мне придется добавить комбинированные индексы для (subject_id, rand1) (subject_id, rand2) (subject_id, rand3) (subject_id, id) правильно, поскольку они обычно используются для фильтрации + упорядочения?
Использует ли использование postgresql вместо mysql в этом случае?
Каково максимальное количество полей в составном индексе?
Я понял ответ. Создав разные составные индексы, я смог увеличить запрос в секунду узла сервера более чем в два раза. Сложных индексов было много, чтобы точно оптимизировать частые запросы. Сравнивая запрос до и после добавления индекса, я смог оптимизировать больше всего. Всем спасибо....