Actualmente, he creado una página de Facebook que extrae notificaciones de diferentes tablas, digamos unas 8 tablas. Cada tabla tiene una estructura diferente con diferentes columnas, así que lo primero que se me ocurre es que tendré una tabla global, como una tabla de contenido, y la actualizaré con cada nuevo golpe. Sé que las inserciones son intensivas en recursos, pero esperaba que, dado que es una tabla estática, solo agregaría quizás un nuevo registro cada 100 visitantes, así que pensé "QUIZÁ" podría hacerlo, pero estaba equivocado. Me las arreglé para obtener bloqueos de solo tres personas martillando el sitio web.MySql Temp Tables VS Views VS arrays php
Así que de todos modos, ahora tengo que volver a hacerlo utilizando un método diferente. Inicialmente iba a hacer vistas, pero tengo un problema con las vistas. La tabla seleccionada deberá contener la identificación de un usuario. Aquí hay un ejemplo de una declaración de selección de 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
Disculpe el desorden. En cualquier caso, como puede ver, necesito devolver el Id de usuario de la página como una columna seleccionada de la tabla. No pude entender cómo hacerlo con vistas, así que no creo que las vistas sean la forma en que me dirigiré porque hay muchas más de este tipo de consultas. Vengo de un fondo MSSQL, y me encantan los procedimientos almacenados, por lo que si hay procedimientos almacenados para MYSQL, sería excelente.
A continuación empecé a pensar en las tablas temporales. La mesa estará en la memoria, la mesa probablemente tendrá 150 filas como máximo y no habrá puntos muertos. ¿Sigue siendo muy costoso hacer inserciones en una mesa temporal? ¿Terminaré bloqueando el servidor? En este momento tenemos quizás 100 usuarios por día, pero quiero intentar ser una prueba de futuro cuando tengamos más usuarios.
Después de pensarlo mucho, me di cuenta de que la única forma es que el usuario php obtenga todos los resultados como una matriz. El problema es que me gustaría conseguir algo como:
$my_array[0]["date_created"] = <current_date>
El problema con lo anterior es que tengo para ordenar por date_created, pero esto es una matriz multidimensional.
De todos modos, para obtener 150 a 200 registros MAX de una base de datos, ¿qué enfoque tomaría? Temp Table, View o php?
Las vistas no son necesarias en las sentencias 'select'. También pueden ser tablas temporales. Ver http://www.percona.com/blog/2007/08/12/mysql-view-as-performance-troublemaker/, y http://www.percona.com/blog/2010/05/19/a -workaround-for-the-performance-problems-of-temptable-views /, y http://dba.stackexchange.com/a/16376/9405 – Pacerier