2011-06-30 126 views
0

我试图设计一个页面,使其工作速度最快,同时也试图避免重复。在设计系统时需要建议

基本上,我将加载3套用户的联系人。业务联系人,个人联系人和特殊联系人,可能是商业/个人的混合体。因此,在本质上我会做这3个疑问:

SELECT stuff FROM contacts WHERE userId = '$userId' AND type = 'business' 

SELECT stuff FROM contacts WHERE userId = '$userId' AND type = 'personal' 

SELECT stuff FROM contacts WHERE userId = '$userId' and isSpecial = 1 

这些联系会通过JavaScript来在页面上填入一定<div>s并在搜索页面上的接点使用。

只加载业务和个人联系人,然后通过javascript循环遍历它们并使用javascript构建第三个特殊联系人列表,本质上这里isSpecial设置为1会更有意义吗?

或者它会更好地获得3套分开使用MySQL查询并将它们传递给JavaScript作为3个单独的集合从开始?

或者我应该只从MySQL获得一组联系人,只要userId = '$currentUser'并在页面加载时通过javascript将它们排序为单独的列表? (我会循环浏览页面上的所有联系人以填充它们各自的<div>,也许我也可以将它们排序为3个独立的列表,而我正在循环浏览它们?)

或者会采用其他方法最好?

我的问题在于,尽可能为用户尽可能快地完成所有工作,同时最大限度地减少数据库服务器上的压力。

+0

我推荐一个基于数据绑定的大列表和渲染(可能是淘汰赛?) – Raynos

+0

@Raynos这些术语是什么意思? (数据绑定和挖空) –

+0

[knockoutjs](http://knockoutjs.com/)用于将数据绑定到DOM的库。 – Raynos

回答

1

IMO如果你使用MySQL本身来分开获取联系人,那么MySQL会更好,因为MySQL相对更快。同样,如果在用户浏览器中关闭了JavaScript,或者他正在使用移动浏览器,那么您将无法分离联系人。

编辑

正如你所指出的那样,JavaScript是为您的网站最小必要,那么最好的办法是使用一个单一的查询单去获取数据,并使用JS分离。

+0

移动浏览器的事情不是一个问题,因为这个页面大量建立在JavaScript上,如果有人让它被禁用,那么它不被我们支持。 –

+0

请检查编辑:) – Balanivash

1

只做一个查询,在该查询中加载“business”和“personal”,然后查找“isSpecial”。 (这假定有没有一些其他类型的担心。)

+0

为什么要这样做? –

1

你能不能做:

SELECT东西从通讯录其中userid =“$用户id”和type =“业务”或类型=“个人” OR isSpecial = 1

然后你只有一个呼叫进入数据库。

您还可以更改SELECT的东西,只选择您需要的字段。另外,根据需要更改您的sql查询以使数据库对联系人进行排序。

更新 好的,只是一个想法,在页面加载时,你首先选择例如20个联系人(最多),然后运行javascript显示它们或任何,然后当你收到事件,该页面已完全加载,然后做其余行的SELECT语句(如果有的话)。

+1

他想单独显示它们。所以问题不仅在于提取,而且根据类型分类。 – Balanivash

+0

我可以做到这一点,但我担心用户在页面加载时通过javscript将它们排序到单独列表中需要等待多长时间。 (可能有100-200个业务和个人的联系人) –