2009-10-27 42 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