2012-02-01 25 views
1

我的问题是有什么办法来更好地管理这个数据库实现。获取user_name的有效方法

背景:

网页与MySQL,PHP和JavaScript的工作。

下表(简化讨论)假设:

* USER_TABLE *

user_id (PK) 
user_name 

* thread_table *

thread_id (PK) 
user_id (Index) 
thread_title 

我想用主题的标题列表的视图以及用户发布它们。

因此,这将是我平时的查询:

SELECT thread_title, thread_table.user_id, user_name 
FROM thread_table INNER JOIN user_table 
WHERE user_table.user_id = thread_table.user_id 

我的问题是,这将是最有效的方式(快),以获得具有USER_ID的USER_NAME?

这是一个简化的例子,但我有更复杂的查询,加入不同的表,并且只有加入另一个表才能获得user_name是“痛苦”的。

那么我该怎么做才能提高执行效率呢?至少我应该使用散列键为user_table创建一个内存表,以便更好地获取具有user_id的user_name?

谢谢!

回答

0

这是正确的实现。如果JOIN对你来说很痛苦,那么你正在使用错误的工具! JOIN是SQL的一个固有部分,并且您需要使用JOIN来检索特定信息并不意味着您应该更改模式。

如果这是您在其他查询中反复使用的常见模式,那么它是视图的理想选择。然后,您可以在其他查​​询中使用该视图,并消除某些键入。

如果表现真的是一个问题,您可以开始研究非等化,但我没有意识到您处于这个阶段。发布您的查询时间和EXPLAIN PLAN的输出将有助于进一步诊断。

+0

如果您觉得查询速度慢,请在'thread_table.user_id'上添加索引 – 2012-02-01 14:55:56

相关问题