我的SQL查询中有两个内部联接:
SELECT `M`.`msg_id`,
`U`.`username`,
`U`.`seo_username`
FROM `newdb2`.`users` AS `U`
INNER JOIN (SELECT subscriber_to_id
FROM subscriptions
WHERE subscriber_id = 434) AS subscriber
ON id = subscriber_to_id
INNER JOIN `newdb2`.`messages` AS `M`
ON (`M`.`uid_fk` = `U`.`id`)
ORDER BY id DESC LIMIT 10
当我执行此查询时,我发现这很慢。 如何修改thiş查询以使其更快?
答案 0 :(得分:0)
对此类内容的快速修复是添加索引,这些索引允许您的数据库服务器快速查找您正在搜索的列。 For more info on how to add indexes to columns, see the manual
在此查询中,这些列为:
ORDER BY id
应该没问题,因为我假设您的id
列已经有一个主键索引,但排序查询也会降低它的速度。
子选择查询也会降低查询速度。在此特定查询中,我看不到在任何地方使用的别名subscriber
(包含您的子查询的结果,inner join
),因此请完全删除该连接。