我有一个关于优化这个查询的新手问题。
假设我有三张桌子。学生、班级和团体
假设我有数万亿的数据/记录,那么这个查询的最佳方式是什么?我应该为我使用过的每一列创建一个索引吗?首先创建一个临时表而不是子查询?谢谢!
SELECT Student_ID,
BDate,
SUM(Calc1 + Calc2 ) / 2 AS Calc4
FROM (
SELECT a.student_id AS Student_ID, a.birthday AS BDate,
SUM(a.test1 + a.test2 / a.test3) AS Calc1,
SUM(a.test1 + a.test2 + a.test3) AS Calc2,
AVG(b.test1 + b.test2 + b.test3)*2 AS Calc3,
FROM Students a
LEFT JOIN Group b on a.Name = b.Name
LEFT JOIN Class c on b.Name = c.Name
WHERE a.Forte ('Math', 'PE')
AND a.Hobby ('Eating', 'Video Games')
GROUP BY a.Student_ID, a.birthday
) subA
GROUP BY Student_ID, BDate发布于 2022-11-23 04:23:57
it.
INDEX(Student_ID, birthday) SELECT,把calc4折叠进去。a上不使用SELECT
我希望b和c有PRIMARY KEY(name)。但是,有一百万行,就会有重复的。因此,我宣布这个问题不完整。
https://stackoverflow.com/questions/74540769
复制相似问题