Mysql Table Optimization для фильтрации и предотвращения сортировки файлов

0

Я создаю приложение с угловым викторином с 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 в этом случае?

Каково максимальное количество полей в составном индексе?

  • 0
    Вопросы 1 и 2: почему бы вам не попробовать и убедиться сами? Объясните, выберите ... также поможет. 3: Вы не можете ожидать, что кто-нибудь ответит вам за вас на основе одного запроса. 4: 16 столбцов.

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню