2012-12-08 39 views
1

我有一个用PHP编写的网站,用户可以上传图片,发送好友请求,发布消息。使用MySQL的PHP​​事件系统

该网站建立在CodeIgniter框架上。

我想拥有所有这些事件的“日志”。例如,我想显示所有朋友的最新活动。像Facebook一样,X喜欢Y图片或Z发布了一条新消息。

我的数据库结构是这样的:

事件表:

ID | user_id | event_type | meta_field | date

我更喜欢友情,图片表格等

meta_filedevent_type,将指定来自另一个表的数据。例如,对于在

下一行

事件表:

1, 4, 3, 12, 2012-12-08

3将指定的事件是一个友谊请求,并且12将从友谊表中,ID 12,其中我有关于这个友谊请求的所有细节。

问题是,这是设计数据库的好方法吗?假如我的友谊表中填充了数据,我怎样才能优化排序,例如我朋友的所有最新活动。您建议我使用哪种技术进行缓存或其他可提高我的性能和代码质量的技术?

+1

这将不是一个表结构的问题,更是一个正确索引的问题。只要你只在你的查询中明智地加入和汇总,那么正确的索引就可以获得足够的性能。直到你知道你需要(不成熟的优化是所有邪恶的根源)之前,不要担心缓存。代码质量很难衡量,没有显示的代码。 –

回答

1

这是非常好的做法。但是,当数据库变大时,必须对字段“meta_field”进行索引以提高性能。使用phpMyAdmin可以轻松地为该字段编制索引。

+0

是的,meta_field已经被编入索引,我问是否有更强大的方法来做到这一点。谢谢你的回复。 –