需要有关设计系统的建议

时间:2011-06-30 16:12:08

标签: javascript mysql performance

我正在尝试设计一个页面,使其工作速度最快,同时也尽量避免重复。

基本上,我要加载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构建第3个特殊联系人列表,基本上isSpecial设置为1?

或者使用MySQL查询单独获取3套并将其传递给javascript作为3个单独的套装会更好吗?

或者我应该只从userId = '$currentUser'获得一组来自MySQL的联系人,并在页面加载时通过javascript将它们分类为单独的列表? (无论如何,我将遍历页面上的所有联系人以填充他们各自的<div>,也许我还可以在循环浏览时将它们分成3个单独的列表?)

或者其他方法是否最好?

我担心的是尽可能快地为用户提供一切,同时最大限度地减少数据库服务器的压力。

3 个答案:

答案 0 :(得分:1)

只执行一个查询,在该查询中加载“business”和“personal”,然后找到“isSpecial”。 (这假设没有其他类型需要担心。)

答案 1 :(得分:1)

你不能这样做:

SELECT stuff FROM contacts WHERE userId ='$ userId'AND type ='business'OR type ='personal'OR isSpecial = 1

然后你只有一次调用数据库。

您还可以将SELECT内容更改为仅选择所需的字段。此外,更改您的SQL查询以使数据库根据需要对联系人进行排序。

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

答案 2 :(得分:1)

IMO最好是使用MySQL本身单独获取联系人,因为MySQL相对较快。另外,如果在用户浏览器中关闭了javascript,或者如果他使用的是移动浏览器,那么您将无法隔离联系人。

修改

正如您所指出的,javascript是您网站的最低要求,那么最好的方法是使用单个查询来获取数据并使用js进行隔离。