我在一所学校工作,并建立了一个数据库来帮助检查哪些孩子已经去过哪些课后俱乐部的噩梦。优化一个笨拙的查询
我试图通过建立一个数据库,使用链接表从每个42个寄存器(Excel文档)中绘制数据库。然后,我设置了一些查询,从特定表格中搜索学生,然后生成一份报告,以便每个表格小组可以查看他们形式的孩子是否在特定的一周内去过某个俱乐部。我的SQL知识很基础:我可以编写查询来做各种事情,但不知道如何优化大型查询。
我遇到的问题是每个报告都需要2分30秒来生成,现在我已将所有42个寄存器添加到查询中。之前,当我只有31人时,报告在30秒内生成。
下面是该查询的示例:
SELECT [UID], [Name], [Group], [Week 1], [Week 2], [Week 3],
[Week 4], [Week 5], [Week 6]
FROM [club 1]
WHERE ((([Club 1].[Group])="group name"))
UNION ALL
SELECT [UID], [Name], [Group], [Week 1], [Week 2], [Week 3],
[Week 4], [Week 5], [Week 6]
FROM [club 42]
WHERE ((([Club 42].[Group])="group name"));
查询具有初始SELECT
后41 UNION ALL SELECT
的和最有可能是最inificient,眼hurtingly写的不好的查询,但正如我说,我对SQL的知识是基本的,我正在学习。
一些更多信息: 这些注册表中有480名学生,一名学生可以在一周内去多个俱乐部,因此查询需要查找每个学生已经参加了一个俱乐部。
使用Excel以外的选项非常非常有限。我已经和一些朋友谈过了,并且研究了MySQL的方法,并在网络上建立了一个本地服务器,但是我们的网络是一个管理服务,管理它的公司对于在服务器上设置的东西至少不会这么说。可以理解的)。
我想,为了我所需要的,这可能是唯一的方法来做到这一点,并有一个查询需要2分钟30秒比它每周五手动检查每个注册表所需的30分钟更好。我想通过这个排序的原因是:
A)我想进一步扩大我的编程知识,并有,到目前为止,设法错过SQL
B)访问数据库中的教师往往心浮气躁,单击随机加载报告时试图使其工作更快或出于挫折,经常崩溃访问
任何帮助将非常感激,请不要犹豫,询问详情我可能错过了。我愿意尝试任何暗示的建议,因为这对我来说是一个很大的新领域。
我的第一个想法是在Access中构建整个事情,但是这是在业余时间完成的,当我提到删除原始寄存器以替换它们与Access数据库时,存在很多抱怨。 我实际上在学校教授信息通信技术,所以我很高兴设置这一切,但这是一个时间问题。 我已经考虑了答案,我认为唯一的行动方式是找到时间把所有这些都放到Access中。 我为了抱怨而尝试在猪周围使用这种猪头笨拙的方式感到一个白痴。 感谢您的回复。我很快就会回来寻求建议。 – Vred 2012-02-26 15:37:35