Самый эффективный способ сделать этот скрипт PHP - PullRequest
0 голосов
/ 17 января 2011

У меня есть любое количество пользователей в базе данных (это может быть 100, 2000 или 3), что я делаю, используя mysql "show tables" и сохраняю имена таблиц в массиве, затем я запускаюХотя цикл и берет каждое имя таблицы (имя пользователя) и вставляет его в некоторый код, я запускаю указанный фрагмент кода для каждого имени таблицы.У 3 пользователей этот скрипт занимает около 20 секунд.Он использует API Twitter и делает некоторые вставки MySQL.Это самый эффективный способ сделать это или нет?

Ответы [ 3 ]

5 голосов
/ 17 января 2011

Конечно, нет!

Я не понимаю, почему вы храните каждого пользователя в своей таблице. Вы должны создать таблицу users и выбрать оттуда.

Запустится через 0,0001 секунды.

Обновление:

В таблице есть строки и столбцы. Вы можете хранить несколько пользователей в строках, а информацию о каждом пользователе - в столбцах.

Пожалуйста, попробуйте некоторые учебники / книги по дизайну баз данных, они вам очень помогут.

0 голосов
/ 17 января 2011

Базы данных оптимизированы для обработки множества строк;некоторые из используемых методов - это индексы, физическое размещение данных на диске и так далее.Операции над многими таблицами всегда будут выполняться медленнее - это не то, для чего была создана СУБД.

Есть одно исключение - иногда вы оптимизируете базы данных с помощью шардинга (разбиения данных), но этот подход имеет столько же преимуществ, сколько и недостатков.Одним из недостатков является то, что запросы, подобные описанному вами, занимают много времени.

Вы должны поместить всех своих пользователей в одну таблицу, потому что с логической точки зрения они представляют одну сущность.

0 голосов
/ 17 января 2011

Если вы беспокоитесь о сохранении нескольких записей для каждого пользователя в одной и той же таблице пользователей, у вас может быть отдельная таблица для твитов с ссылкой tweet_id для пользователя.

Я бы наверняка выбрал одну таблицу пользователей.

...