Теперь я действительно продвинутый PHP-разработчик и хорошо разбираюсь в небольших наборах MySQL, однако сейчас я создаю большую инфраструктуру для недавно созданного стартапа, и их серверы собирают около 1 миллиона строк данных каждый день, используя их мощную серверную мощность и предыдущую архитектуру.
Мне нужно знать, каков наилучший способ поиска по большим наборам данных (в настоящее время их размер составляет 84,9 миллиона) строк с размером базы данных 394,4 гигабайта. Он размещен на Amazon RDS, поэтому он не имеет времени простоя или медлительности, просто я хочу знать, как лучше всего получить доступ к большим наборам данных внутри.
Например, если я хочу найти в базе данных 84 миллиона строк, мне потребуется 6 минут. Теперь, если я сделаю прямой запрос к определенному идентификатору или названию, он будет обработан немедленно. Итак, как бы я искал через большой набор данных.
Напоминаю, что быстро найти информацию через базу данных, передав одну переменную, но при поиске она выполняется ОЧЕНЬ медленно.
Пример запроса MySQL:
SELECT u.*, COUNT(*) AS user_count, f.* FROM users u LEFT JOIN friends f ON u.user_id=(f.friend_from||f.friend_to) WHERE u.user_name LIKE ('%james%smith%') GROUP BY u.signed_up LIMIT 0, 100
Этот запрос длиной менее 84 миллионов строк значительно медленнее. Конкретно, 47,41 секунды, чтобы выполнить этот запрос автономно, есть идеи, ребята?
Все, что мне нужно, это отсортированный вызов, и я смогу получить дрейф. Кроме того, я знаю, что MySQL не очень хорош для больших наборов данных и чего-то подобного Oracle или MSSQL, однако мне было сказано перестроить его на MySQL, а не на других решениях для баз данных.