2009-10-27 45 views
1

我有一个非常复杂的形式。你可以看到如下:然而ms-access加载数据问题

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

chavrusas JOIN中是否存在WHERE'1'='1'的原因?这似乎使它返回的行数多于必要数量,然后删除那些JOINing表的性别字段不以'm'开头并且最后不以'd'开头的行。 – 2009-10-27 18:48:58

回答

1

即SQL是不好的,因为你真的希望将这些诸多领域的项目? 这似乎是SQL语句被扔在一起,看起来像它的工作,所以你选择保持这种方式。

+0

我删除了所有的组,并且没有变化 – 2009-10-27 18:22:14

1

你使用dlookups任何地方或任何其他计算控件=更简单的人往往是你有许多子窗体的减缓一种形式的加载/清爽......

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是不恰当或有必要要么,你有没有聚合函数,将导致分组。

因为不需要的GROUP BY和JOINed表,我怀疑你没有在这里发布你真正的SQL。

+0

肯非常感谢您的帮助,不幸的是我确实尝试了您的代码我认为其他人是正确的,我有太多的控件加载 – 2009-10-27 19:04:43