我正在尝试设计一个页面,让它工作得最快,同时也试图避免重复。
基本上,我将加载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,这是否更有意义?
或者,使用MySQL查询分别获取3个集合,并将它们作为3个独立的集合从get go传递给javascript会更好吗?
或者,只要userId = '$currentUser',我应该只从MySQL获取一组联系人,并在页面加载时通过javascript将它们排序到单独的列表中?(我将遍历页面加载上的所有联系人,以填充它们各自的<div>,也许我还可以在遍历它们的同时将它们排序为3个独立的列表?)
或者其他任何方法都是最好的?
在这里,我关心的是让用户尽可能快地完成所有操作,同时最小化数据库服务器上的压力。
发布于 2011-07-01 00:21:12
由于MySQL的速度相对较快,所以最好使用MySQL本身来单独获取联系人。此外,如果在用户浏览器中关闭了javascript,或者如果他使用的是移动浏览器,那么您将无法隔离联系人。
编辑
正如你所指出的,javascript是你的站点的最低要求,那么最好的方法是使用单次go和单次查询来获取数据,并使用js进行分离。
发布于 2011-07-01 00:16:19
只执行一次查询,在该查询中同时加载"business“和"personal”,然后查找"isSpecial“。(这假设没有其他类型需要担心。)
发布于 2011-07-01 00:20:41
你能不能不这样做:
从userId = '$userId‘和type =’业务‘或type =’个人‘或isSpecial =1的联系人中选择材料
那么你只有一次对数据库的调用。
您还可以将选择内容更改为仅选择您需要的字段。此外,更改您的sql查询,使数据库根据您的需要对联系人进行排序。
Update OK,只是一个想法,在页面加载时,您确实选择了前20个联系人(最多),然后运行javascript来显示它们或其他任何东西,然后当您收到该页面已完全加载的事件时,然后对其余行(如果有)执行SELECT语句。
https://stackoverflow.com/questions/6537827
复制相似问题