MySQL - 我的 View 很慢

标签 mysql join view

我有 4 个表:

  • 学生 超过 7000 条记录
  • 教师 拥有超过 600 条记录
  • 大学 超过30条记录
  • Lessons_Meta 超过 10000 条记录

学生列:

id | student_number | name


教师列:

id | teacher_number | name


大学列:

id | name


Lessons_Meta 列:

id | lesson_code | lesson_name | student_id | teacher_id | university_id


我的观点是:

CREATE VIEW `view_lessons` AS
SELECT
        *,
        (SELECT `name` FROM `students` WHERE `students`.`id` = `lessons_meta`.`student_id` LIMIT 1) AS "student_name",
        (SELECT `name` FROM `teachers` WHERE `teachers`.`id` = `lessons_meta`.`teacher_id` LIMIT 1) AS "teacher_name",
        (SELECT `name` FROM `universities` WHERE `universities`.`id` = `lessons_meta`.`university_id` LIMIT 1) AS "university_name"
FROM `lessons_meta`


我的查询是:

SELECT * FROM `view_lessons` LIMIT 20

20 秒后,显示查询完成!我怎样才能减少这个时间负荷?

最佳答案

您可能只需要索引。从以下索引开始:

CREATE INDEX idx_students_id_name ON students(id, name);
CREATE INDEX idx_teachers_id_name ON teachers(id, name);
CREATE INDEX idx_universities_id_name ON universities(id, name);

关于MySQL - 我的 View 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831072/

相关文章:

php - MySQL 抛出无法执行查询。命令不同步

用于生产中 rds 的 Mysql debezium 连接器导致死锁

javascript - PHP 不生成 Excel 文件

sql - mysql 三联结

mysql - 发生类型为 'System.NullReferenceException' 的未处理异常

mysql - Mysql 数据透视表

mysql - LEFT JOIN - 通过左连接返回 payment_method 总和的空结果

css - Rails : Stylesheet/view issue? 虽然在浏览器中查看时有源代码,但屏幕上没有显示任何内容

php - Blade View : if statement with OR/AND condition

wpf - CefSharp ChromiumWebBrowser - 允许用户放大/缩小