MySql Temp Tables VS Views VS php array

В настоящее время я создал страницу в стиле facebook, которая извлекает уведомления из разных таблиц, скажем, около 8 таблиц. Каждая таблица имеет разную структуру с разными столбцами, поэтому первое, что приходит в голову, это то, что у меня будет глобальная таблица, например, оглавление, и я буду обновлять ее с каждым новым попаданием. Я знаю, что вставки требуют значительных ресурсов, но я надеялся, что, поскольку это статическая таблица, я буду добавлять только одну новую запись на каждые 100 посетителей, поэтому я подумал: «МОЖЕТ БЫТЬ», мне это сойдет с рук, но я ошибался. Мне удалось получить тупиковые ситуации только из-за того, что всего три человека взломали сайт.

Так или иначе, теперь я должен переделать это, используя другой метод. Изначально я собирался делать просмотры, но у меня проблема с представлениями. Выбранная таблица должна содержать идентификатор пользователя. Вот пример оператора select из php:

$get_events = "

    SELECT id, " . $userId . ", 'admin_events', 0, event_start_time
        FROM admin_events
        WHERE CURDATE() < event_start_time AND 
              NOT EXISTS(SELECT id
                         FROM admin_event_registrations
                         WHERE user_id = " . $userId . " AND admin_events.id = event_id) AND
              NOT EXISTS(SELECT id
                         FROM admin_event_declines
                         WHERE user_id = " . $userId . " AND admin_events.id = event_id) AND
              event_capacity > (SELECT COUNT(*) FROM admin_event_registrations WHERE event_id = admin_events.id)
           LIMIT 1

Извините за беспорядок. В любом случае, как видите, Мне нужно вернуть идентификатор пользователя со страницы в качестве выбранного столбца из таблицы. Я не мог понять, как это сделать с представлениями, поэтому я не думаю, что представления - это путь, по которому я буду двигаться, потому что существует намного больше таких типов запросов. У меня опыт работы с MSSQL, и мне нравятся хранимые процедуры, поэтому, если есть хранимые процедуры для MYSQL, это было бы отлично.

Затем я начал думать о временных таблицах. Таблица будет в памяти, таблица будет иметь максимум 150 строк, и взаимоблокировок не будет. Все еще очень дорого делать вставки на временном столе? Могу ли я в конечном итоге сломать сервер? Прямо сейчас у нас может быть около 100 пользователей в день, но я хочу попытаться обеспечить будущее, когда мы получим больше пользователей.

После долгих размышлений я решил, что единственный способ - это пользовательский php и получить все результаты в виде массив. Проблема в том, что я получил бы что-то вроде:

$my_array[0]["date_created"] = <current_date>

Проблема с вышеизложенным в том, что мне нужно сортировать по date_created, но это многомерный массив.

В любом случае, какой подход вы выберете, чтобы извлечь от 150 до 200 записей MAX из базы данных? Temp Table, View или php?

7
задан JohnathanKong 16 September 2010 в 17:10
поделиться