Заранее благодарим за помощь,
У меня есть список из миллиона имен и псевдонимов, у каждого имени есть только одно прозвище. каждое имя имеет соответствующий псевдоним (даже если это то же самое)
Обычно я использую PHP и MySQL для хранения данных в строках, а затем с помощью оператора select для извлечения. Я консультирую вас из-за объема, который этот метод не может быть оптимизирован.
Будет создан скрипт, который должен каждый раз получать соответствующие псевдонимы из 600 имен из миллиона, это будет выполняться с каждой пользовательской pageload.
У меня есть опыт работы с PHP и MySQL
Я могу построить данные любым способом, простым текстом, mysql или чем-то еще.
Каков наилучший способ хранения и выбора этого набора данных?
Никогда не загружайте все предметы одновременно. Погрузите их постепенно. Пример реальной жизни – это Facebook и Twitter. Он загружает только определенное количество предметов, а затем, когда вы достигаете дна или нажимаете «загрузить больше», он загружает следующие N элементов или Google, что отображает только N элементов на страницу из миллиарда возможных результатов.
В эти дни я все еще вижу, как люди возвращают отформатированный HTML-запрос в AJAX-запросы – не делайте этого. Загрузите сервер на начальную страницу (с исходным HTML), а остальные в JSON через AJAX. У некоторых сценариев шаблонов на клиентской стороне создается HTML-код для вас, когда поступают данные JSON. Это экономит вашу пропускную способность и время загрузки.
Это довольно очевидно, почему вы должны использовать сжатие.
Часто вы загружаете все столбцы, потому что «они могут когда-нибудь быть полезными» – нет. Если вы хотите загрузить набор псевдонимов, SQL загружает только псевдонимы. Конечно, поле первичного ключа всегда требуется для спаривания, поэтому в этом случае 2 столбца.
И видя, что это только отношения 1 к 1 между псевдонимом и человеком, храните его в той же таблице. Существует мало потребности в том, чтобы он находился в другой таблице. Это избавит вас от операции JOIN.
Как упоминал eggyql, добавьте индекс в свой столбец имен. Также установите предел для своего sql select SELECT name, nickname FROM your_table LIMIT 0, 10