获取user_name的有效方法

时间:2012-02-01 14:40:49

标签: mysql database

我的问题是有什么方法可以更好地管理这个数据库实现。

背景

网页使用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_name具有user_id的最有效方式(更快)吗?

这是一个简化的示例,但是我有更复杂的查询,连接不同的表,只是为了获取user_name而加入另一个表是“痛苦的”。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

如果这是您在其他查询中反复使用的常见模式,那么它是视图的完美候选者。然后,您可以在其他查​​询中使用该视图,并消除一些输入。

如果性能真的是一个问题,你可以开始研究一下deomralization,但我并没有意识到你在这个阶段。发布您的查询时间和EXPLAIN PLAN的输出将有助于进一步诊断。