首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还有什么比连接3个表更好的方法呢?

还有什么比连接3个表更好的方法呢?
EN

Stack Overflow用户
提问于 2011-01-28 08:33:21
回答 4查看 107关注 0票数 0

我必须在我的项目中加入3个表。

以下是表和列的示例:

代码语言:javascript
复制
Table-1 : posts 
Columns1: id,owner,title,post,keywords

Table-2 : sites
Columns2: id,name,url

Table-3 : views
Columns3: id,post,view

当我连接所有这些表时,会发生这样一个小小的巨大查询:

代码语言:javascript
复制
SELECT title,post,keywords,name,url,view
FROM posts 
LEFT JOIN sites ON sites.id=posts.owner 
LEFT JOIN views ON views.post = post.id 
WHERE posts.date BETWEEN '2010-10-10 00:00:00' AND '2010-11-11 00:00:00' 
ORDER BY views.view DESC 
LIMIT 0,10

这是唯一的方法吗?或者我可以做一些其他的事情来获得更好的性能?

这是我当前查询的解释。上面的一个只是一个例子。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-28 08:54:19

如果您的关系是有保证的,换句话说就是不能为空的外键,那么如果查询使用内部连接而不是左连接,那么它的性能会更好。尽管这个查询看起来还不够大,也不够复杂,不足以严重影响性能。

票数 0
EN

Stack Overflow用户

发布于 2011-01-28 08:37:39

这并不是一个特别“庞大”的查询。您是否运行了查询分析器并检查了慢点在哪里,然后检查了您的索引?

Re: Analyzer -微软一直在移动它,但在2008 Management Studio中,有几个选项可以显示执行计划。一旦您看到执行计划,您就可以看到问题所在。寻找一个单独的行动,占用你的80+%时间,并专注于它。像表扫描这样的事情表明你可以通过调整索引来加速它。(索引也有缺点,但请稍后再担心)。

票数 2
EN

Stack Overflow用户

发布于 2011-01-28 08:40:55

对于任何想象力来说,这都不是一个巨大的查询。

它到底有多慢?

也许,如果视图包含的信息不超过您所显示的内容,那么您应该将视图计数设置为一个帖子字段。除非您实际存储有关视图本身的一些信息,如用户代理字符串或时间,否则不需要将其作为单独的表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4823560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档