我有一个非常复杂的形式。如下所示:
alt text http://img9.imageshack.us/img9/2465/test2xk.jpg
但是,我在数据库中只有8mb的数据。
它的工作方式是它在左侧填充所有记录名称的列表框。滚动记录时,它会为每条记录加载适当的数据
当我在左侧滚动列表框时,由于某种原因,将每条记录加载到所有相应的字段大约需要2秒钟。没有图片加载或任何巨大的。数据库驻留在本地。它只是加载每个记录最多100kb
你能告诉我这是否需要这么长时间才能加载?
这可能是查询的问题吗?
这是我每次滚动列表框中的项目时运行的内容
SELECT u.id,u.title,u.title,u.first,u.last FROM
(((tblusers u LEFT JOIN tbluserstudentteacher
ON u.id = tbluserstudentteacher.student_teacher_user_id)
LEFT JOIN tblUsersSubjects ON u.id = tblUsersSubjects.user_id)
LEFT JOIN tblUserAvailability ON u.id=tblUserAvailability.user_id)
LEFT JOIN chavrusas ON u.id=chavrusas.luser_id
WHERE 1=1 AND (u.gender) LIKE 'm*'
AND (chavrusas.luser_type)='shliach'
AND (chavrusas.ruser_type)='shliach' AND (u.last LIKE 'd*')
GROUP BY u.id, u.title, u.title, u.first, u.last
ORDER BY last;
答案 0 :(得分:3)
我注意到您有许多子表单,如果您在需要之前未加载所有子表单,则可能会获得更好的性能:Does it degrade performance to use subforms in MS Access?
答案 1 :(得分:1)
那个SQL很糟糕,因为你真的想要按这么多字段分组吗? 似乎SQL语句被抛在一起看起来像它有效,所以你选择保持这种方式。
答案 2 :(得分:1)
你在任何地方使用dlookups或任何其他计算控件=更简单的那些往往会减慢表单的加载/刷新...
答案 3 :(得分:1)
重新格式化SQL后,看起来你正在做一些不必要的连接,那些是tbluserstudentteacher,tblUsersSubjects和tblUserAvailability的连接。你可以大大简化(我强烈怀疑提高性能)。以下内容应该有效:
SELECT u.id, u.title, u.first, u.last
FROM (tblusers u LEFT JOIN chavrusas c ON u.id = c.luser_id
AND u.gender LIKE 'm*'
AND u.last LIKE 'd*'
AND c.luser_type = 'shliach'
AND c.ruser_type = c.luser_type)
ORDER BY last;
GROUP BY也不合适或不必要,因为你没有可能导致分组的聚合函数。
我怀疑你没有在这里发布真正的SQL,因为不需要GROUP BY和JOINed表。