Мне интересно, правильна ли моя теория, поэтому обращаюсь за советом к гуру MySQL.
У меня есть таблица, которую я переработал, чтобы просто включить различные элементы, по которым пользователь SELECT
может искать запросы. В предложении WHERE
есть много перестановок, а затем несколько перестановок, которые они могут захотеть ORDER BY
.
Создание мультииндексов для всех практически невозможно, как я вижу, и медлительность может быть вызвана ORDER BY
, когда в таблице более 1 миллиона строк.
Моя идея состоит в том, чтобы создать версии результатов, дублированных в других таблицах, но использовать ALTER TABLE
, чтобы сделать ORDER BY
различными способами, которыми пользователь может ORDER BY
.
Затем через приложение узнайте, какой порядок хочет пользователь, и используйте эту таблицу соответствующим образом. Тогда индексы будут нужны только для столбцов WHERE, использующих крайний левый угол.
Является ли это разумным способом сделать это для повышения производительности и устойчивости, если таблицы обновляются только один раз и копируются, а при повторном копировании обновляются?
Конечно, я предполагаю, что mysql возвращает строки через LIMIT
в порядке сортировки таблицы, если не объявлено ORDER BY
в операторе SELECT
. Это означало бы, что нет необходимости вставлять ORDER BY
в запросе SELECT
.
например SELECT * FROM table_order_x WHERE x = 1 AND y = 2 AND z = 3 LIMIT 15000,25;
в зависимости от порядка сортировки по таблице.
Будет ли это работать или кто-нибудь должен был придумать что-то подобное? Я пытаюсь мыслить нестандартно.