MySQL 连接性能

标签 mysql performance join

下面的查询在 View 中执行 17 秒。有 450,000 行。我在连接的两列上有一个索引,它们是 FK 的。连接列是 BIGINTS。有什么办法可以让这家伙加速吗?

SELECT c.id, sce.user_id
FROM sims_classroom c
JOIN sims_class_enrollment sce ON c.id = sce.classroom_id 

解释

'1', 'SIMPLE', 'c', 'index', 'PRIMARY', 'PRIMARY', '8', NULL, '211213', 'Using index'
'1', 'SIMPLE', 'sce', 'ref', 'fk_class_enrollment_classroom_id', 'fk_class_enrollment_classroom_id', '9', 'ngsp.c.id', '1', 'Using where'

sims_classroom = 200100
sims_class_enrollment = 476396

最佳答案

它会减慢写入速度,但由于索引中只差一列,所以我会为 sce 创建一个两列索引:

classroom_id, user_id

这将导致 mysql 甚至不需要访问实际的表(在解释中两者都是“使用索引”)。

关于MySQL 连接性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270253/

相关文章:

php - 在 While 中使用循环计数器

MySQL OR 与 IN 性能

javascript - 使用 form-repeater 在填充的表中附加新行需要花费大量时间(10-15 秒) - jQuery

performance - 哪种方法在 java 中生成线程转储最不显眼?

sql - 使用索引提高 PostgreSQL 查询性能

mysql - 如何对多个表执行简单连接?

mysql - 为什么Mysql时间输出值显示为hhmmss而不是hh :mm:ss?

mysql - mysql中的特定排序

linq - 寻求 Entity Framework 中 3 层 LINQ 查询的建议

mysql - 从一个表中获取结果,按用户和日期分组,从另一个表中加入用户名和帐户信息?