我必须在我的项目中加入3个表。
以下是表和列的示例:
Table-1 : posts
Columns1: id,owner,title,post,keywords
Table-2 : sites
Columns2: id,name,url
Table-3 : views
Columns3: id,post,view当我连接所有这些表时,会发生这样一个小小的巨大查询:
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这是唯一的方法吗?或者我可以做一些其他的事情来获得更好的性能?
这是我当前查询的解释。上面的一个只是一个例子。

发布于 2011-01-28 08:54:19
如果您的关系是有保证的,换句话说就是不能为空的外键,那么如果查询使用内部连接而不是左连接,那么它的性能会更好。尽管这个查询看起来还不够大,也不够复杂,不足以严重影响性能。
发布于 2011-01-28 08:37:39
这并不是一个特别“庞大”的查询。您是否运行了查询分析器并检查了慢点在哪里,然后检查了您的索引?
Re: Analyzer -微软一直在移动它,但在2008 Management Studio中,有几个选项可以显示执行计划。一旦您看到执行计划,您就可以看到问题所在。寻找一个单独的行动,占用你的80+%时间,并专注于它。像表扫描这样的事情表明你可以通过调整索引来加速它。(索引也有缺点,但请稍后再担心)。
发布于 2011-01-28 08:40:55
对于任何想象力来说,这都不是一个巨大的查询。
它到底有多慢?
也许,如果视图包含的信息不超过您所显示的内容,那么您应该将视图计数设置为一个帖子字段。除非您实际存储有关视图本身的一些信息,如用户代理字符串或时间,否则不需要将其作为单独的表。
https://stackoverflow.com/questions/4823560
复制相似问题