左连接中的Mysql索引

时间:2017-09-15 14:45:31

标签: php mysql symfony

我正在使用symfony和sonata admin bundle,在Admin部分我有这个查询:

SELECT DISTINCT 
  a0_.id AS id_0, 
  a0_.home_position AS home_position_1 
FROM article_en a0_ 
LEFT JOIN fos_user_user f1_ ON a0_.author_id = f1_.id 
ORDER BY a0_.home_position DESC 
LIMIT 25 
OFFSET 0

查询大约1秒钟,article_en表太多了大约25.000行。我想使用一些索引来提高此查询的性能,但我的所有尝试都没有成功。

有任何提高绩效的建议吗?

修改

我解释了数据库中表的结构。这是 article_en 表,结构和索引:

Article_en table

索引是:

  • ID
  • 中的主要和唯一
  • 指数位置
  • home_position中的索引
  • publication_date中的索引启用
  • author_id中的索引
  • author_id中的外键
  • arabicid中的外键,dutch_id,german_id ......

这是 fos_user_user表

Fos_user_user table

索引是:

  • ID中的主要和唯一。
  • username_canonical中唯一
  • email_canonical中唯一
  • ID
  • 中的索引

计划

此查询由sonata admin bundle执行,以显示来自特定用户的最新25篇英文文章。我每次都在sonata管理包中执行此查询,此查询以分页模式执行,我的目标是尝试提高此查询的性能,以改善应用程序这一部分的用户体验。

1 个答案:

答案 0 :(得分:0)

在3列a0_.author_idf1_.ida0_.home_position

上添加索引

a0_.home_position上的索引,因为它用于对结果进行排序。