使用 LEFT JOIN 进行慢速 SQL 查询

任何用户

我已经阅读了类似的问题,但它对我没有帮助。

我有查询

SELECT `login`, 
   `photo`, 
   `username`, 
   `user`.`id`, 
   `name`, 
   `msg_info` 
FROM   `user` 
       LEFT JOIN `friends` 
              ON `friends`.`child` = `user`.`fb_id` 
WHERE  `friends`.`parent` = '1111' 
ORDER  BY `msg_info` DESC 

这tooks 0.7411秒(甚至更多)

它显示总共 158行(好吧我可以限制它,但查询仍然很慢)

每个表朋友用户都有超过 200.000 行

我该怎么做才能使查询更快?

谢谢!

蒂姆·比格莱森

正如评论所指出的,您的左连接与以下内部连接查询确实没有什么不同:

SELECT
    login,
    photo,
    username,
    user.id,
    name,
    msg_info
FROM user u
INNER JOIN friends f
    ON f.child = u.fb_id
WHERE
    f.parent = '1111'
ORDER BY
    msg_info DESC;

我们可以尝试向 上的friends添加索引(parent, child, name, msg_info, ...)我不确定其他哪些列属于friends,但基本思想是在 上创建索引parent,以加速WHERE子句,并希望利用parent上的低基数然后,我们包含该child列以加快连接速度。我们还在 select 子句中包含所有其他列,让索引覆盖我们需要的其他列。

CREATE INDEX idx ON friends (parent, child, name, msg_info, ...);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用SQL LEFT JOIN查询

来自分类Dev

如何使用SQL LEFT JOIN查询

来自分类Dev

使用 Left Join 的 SQL 查询中的问题

来自分类Dev

使用COUNT ON LEFT JOIN进行MySQL查询

来自分类Dev

使用 LEFT JOIN 进行 SQL 连接

来自分类Dev

SQL DELETE LEFT JOIN查询

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

(My)使用MAX和LEFT JOIN的SQL查询

来自分类Dev

使用COUNT和LEFT JOIN进行缓慢的MYSQL查询

来自分类Dev

使用 LEFT JOIN 查询 MongoDB

来自分类Dev

使用JOIN进行复杂的SQL查询

来自分类Dev

使用JOIN进行复杂的SQL查询

来自分类Dev

如何使用Rails中的Active Record进行慢速SQL查询以进行测试

来自分类Dev

PostgreSQL使用CASE语句进行慢速JOIN

来自分类Dev

使用EF进行总和的慢速mysql查询

来自分类Dev

使用ON或JOIN的SQL查询

来自分类Dev

使用Join的Sql Not IN查询

来自分类Dev

SQL INNER JOIN与使用WHERE的LEFT JOIN

来自分类Dev

使用子查询语法的LEFT OUTER JOIN

来自分类Dev

使用WHERE子句的MySQL LEFT JOIN查询

来自分类Dev

使用LEFT OUTER JOIN建立查询结果

来自分类Dev

使用SQL子查询或JOIN子句进行选择

来自分类Dev

使用JOIN的SQL UPDATE查询

来自分类Dev

使用JOIN的SQL子查询

来自分类Dev

使用INNER JOIN和LEFT JOIN的MySQL查询

来自分类Dev

Oracle 11g XE:如何将LEFT SQL JOIN转换为使用半联接和相关查询的查询?

来自分类Dev

使用WHERE子句的SQL LEFT OUTER JOIN

来自分类Dev

使用LEFT JOIN的T-SQL INSERT INTO