Как оптимизировать хранение и выбор из огромного списка в php?

Заранее благодарим за помощь,

У меня есть список из миллиона имен и псевдонимов, у каждого имени есть только одно прозвище. каждое имя имеет соответствующий псевдоним (даже если это то же самое)

Обычно я использую PHP и MySQL для хранения данных в строках, а затем с помощью оператора select для извлечения. Я консультирую вас из-за объема, который этот метод не может быть оптимизирован.

Будет создан скрипт, который должен каждый раз получать соответствующие псевдонимы из 600 имен из миллиона, это будет выполняться с каждой пользовательской pageload.

У меня есть опыт работы с PHP и MySQL

Я могу построить данные любым способом, простым текстом, mysql или чем-то еще.

Каков наилучший способ хранения и выбора этого набора данных?

  1. Пагинация / ленивая загрузка

    Никогда не загружайте все предметы одновременно. Погрузите их постепенно. Пример реальной жизни – это Facebook и Twitter. Он загружает только определенное количество предметов, а затем, когда вы достигаете дна или нажимаете «загрузить больше», он загружает следующие N элементов или Google, что отображает только N элементов на страницу из миллиарда возможных результатов.

  2. Использовать JSON

    В эти дни я все еще вижу, как люди возвращают отформатированный HTML-запрос в AJAX-запросы – не делайте этого. Загрузите сервер на начальную страницу (с исходным HTML), а остальные в JSON через AJAX. У некоторых сценариев шаблонов на клиентской стороне создается HTML-код для вас, когда поступают данные JSON. Это экономит вашу пропускную способность и время загрузки.

  3. Использовать сжатие

    Это довольно очевидно, почему вы должны использовать сжатие.

  4. Загружать только обязательные поля в SQL

    Часто вы загружаете все столбцы, потому что «они могут когда-нибудь быть полезными» – нет. Если вы хотите загрузить набор псевдонимов, SQL загружает только псевдонимы. Конечно, поле первичного ключа всегда требуется для спаривания, поэтому в этом случае 2 столбца.

И видя, что это только отношения 1 к 1 между псевдонимом и человеком, храните его в той же таблице. Существует мало потребности в том, чтобы он находился в другой таблице. Это избавит вас от операции JOIN.

Как упоминал eggyql, добавьте индекс в свой столбец имен. Также установите предел для своего sql select SELECT name, nickname FROM your_table LIMIT 0, 10