Для такого большого списка сначала нужно спросить себя что-то
- Вы действительно хотите разместить 1 миллион строк в выпадающем списке?
- Не проще ли показать несколько выпадающих списков и заполнить следующий, основываясь на предыдущем выборе?
- Вы могли бы иметь div, эмулирующий выпадающий список, и когда полоса прокрутки достигла конца, вы можете загрузить больше строк ...
Наилучший подход - это , чтобы отсортировать по категориям и показать пользователю пошаговый пошаговый процесс с несколькими выпадающими списками, так как я сомневаюсь, что кто-нибудь прочтет 1 миллион записей.
если вы все еще хотите пойти на этот странный шаг , показывающий все всего за один выпадающий список, вы можете легко кэшировать результат на некоторое время, а при запросе на заполнение данных он будет использовать что находится в памяти и не достигло базы данных.
Или, если это что-то не сильно меняет, вы можете загрузить 1 миллион строк из текстового файла, который быстрее подключается к базе данных ... и затем обновить этот файл по запросу или автоматически.