SQL JOIN, optimization



我目前正在一台服务器上构建一个网站。数据库开始增长,几乎达到半个tera。我想知道如何加快SQL查询的速度,尤其是在连接请求时。。。

事实上,当我做时,我看到了这一点

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

表和概要文件是大表(超过500万个输入)。但我想知道连接是如何执行的,它是如何优化的,因为在我的情况下,如果我第一次选择profile为uid=useruid,我只有一百行,而其他条件会将表减少到一千行,所以连接应该很快,但似乎不是这样,因为连接请求大约需要一秒钟,其中子句id、uid是表中的索引。

有没有优化SQL联接的方法?

当然。整个职业都是靠做这件事生存的。

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

您可以使用索引视图。这可以提高您的性能,因为有一个平衡的联接表树。

它在很大程度上依赖于数据库引擎。如果您的查询效果更好:

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

最新更新