我的问题是有什么方法可以更好地管理这个数据库实现。
背景
网页使用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?
谢谢!
答案 0 :(得分:0)
这是正确的实施。如果JOIN对您很痛苦,那么您使用的是错误的工具! JOIN是SQL的固有部分,而且您需要使用JOIN来检索特定信息并不意味着您应该更改模式。
如果这是您在其他查询中反复使用的常见模式,那么它是视图的完美候选者。然后,您可以在其他查询中使用该视图,并消除一些输入。
如果性能真的是一个问题,你可以开始研究一下deomralization,但我并没有意识到你在这个阶段。发布您的查询时间和EXPLAIN PLAN
的输出将有助于进一步诊断。