MySql临时表VS视图VS php数组

Joh*_*ong 7 php mysql

我目前创建了一个类似于Facebook的页面,它从不同的表中提取通知,比如大约8个表.每个表都有不同的结构和不同的列,所以首先要想到的是我将拥有一个全局表,如目录,并在每次新命中时刷新它.我知道插入是资源密集型的,但我希望因为它是一个静态表,我每100个访问者只会添加一条新记录,所以我想"可能"我可以逃脱这个,但我错了.我设法从只有三个人敲打网站的僵局.

所以无论如何,现在我必须使用不同的方法重做它.最初我打算做观点,但我对观点有疑问.所选表格必须包含用户的ID.以下是来自php的select语句的示例:

$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
Run Code Online (Sandbox Code Playgroud)

对于混乱感到抱歉.无论如何,正如您所看到的,我需要从页面返回用户ID作为表中的选定列.我无法弄清楚如何使用视图进行操作,所以我不认为视图是我将要前进的方式,因为这些类型的查询中有更多.我来自MSSQL背景,我喜欢存储过程,所以如果有MYSQL的存储过程,那将是非常好的.

接下来我开始考虑临时表.该表将在内存中,该表最多可能是150行,并且不存在死锁.在临时表上插入是否仍然非常昂贵?我最终会崩溃服务器吗?现在我们每天可能有100个用户,但是当我们获得更多用户时,我希望能够成为未来的证明.

经过长时间的思考,我认为唯一的方法是用户php并将所有结果作为数组获取.问题是,我会得到类似的东西:

$my_array[0]["date_created"] = <current_date>
Run Code Online (Sandbox Code Playgroud)

上面的问题是我必须按date_created排序,但这是一个多维数组.

无论如何,要从数据库中提取150到200条MAX记录,您会采取哪种方法?临时表,视图还是php?

Tod*_*ses 5

一些想法:

临时表:临时表只会在会话处于活动状态时持续.如果在PHP脚本中运行代码,则在脚本完成执行时将自动销毁临时表.

视图:这些主要用于隐藏复杂性,因为您使用连接创建它,然后像单个表一样访问它.下划线代码是SELECT语句.

PHP数组:比SQL更麻烦一点来获取数据.但是,PHP确实有一些功能可以让生活更轻松,但没有真正的查询语言.

存储过程:MySQL中有存储过程 - 请参阅:http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

我的建议:首先,使用MySQL查询分析器重新编写查询:http://www.mysql.com/products/enterprise/query.html

现在我将使用PDO将我的值放入使用PHP的数组中.这仍将使最初的繁重工作留给数据库引擎,并使您无法多次调用数据库服务器.