2013-12-07 105 views
2

我目前正在单个服务器上构建一个网站。数据库开始增长将近半个tera。我不知道我怎么会加快SQL查询,特别是在加入请求...SQL JOIN,优化

其实我看到,当我做了

SELECT * FROM table LEFT JOIN pofile on profile.id=table.id WHERE uid=useruid 

表和外形都大表(超过5百万的投入)。但我不知道如何执行联合和如何优化,因为在我的情况下,如果我第一次选择配置文件uid = useruid我只有一百行和其他条件减少表到一千行,所以联接应该是快速的,但不似乎是这种情况,因为加入请求需要大约一秒钟,并且where子句ID,UID是表中的索引。

有没有一种方法来优化SQL连接?

+0

而你的数据库引擎是(SQL查询优化的全部艺术取决于数据库引擎及其版本)?你能否显示确切的索引定义? –

回答

1

当然。整个行业都是这样做的。

您应该阅读关于解释计划和索引。有时候,你可以达到1000%或更高的速度(当然取决于数据库的当前状态)。

+0

关于你的答案,但我认为这不是一个答案,因为它太笼统了。 –

+1

它指出了解决这个问题应该采取的方向(以及相关问题)。这比在计划中玩耍更有意义。你需要相当一般的知识,在这种情况下没有直接的答案。 –

0

您可以使用索引视图。由于有连接表的平衡树,这会提高你的表现。

0

它的丑陋取决于数据库引擎。在你的查询的情况下,这是否更好地工作:

WITH t AS (
SELECT 
    * 
FROM 
    table 
WHERE uid=useruid 
) 
SELECT 
    * 
FROM 
    t 
    LEFT JOIN 
    profile 
    ON 
    profile.id = t.id 
+0

嗡嗡声我正在选择...在选择之前,但它是更长。将尝试这一个! – user1998000