Mysql 如果存在';页面上会有很多ajax过滤吗?

Mysql 如果存在';页面上会有很多ajax过滤吗?,mysql,ajax,query-optimization,Mysql,Ajax,Query Optimization,我基本上有这个网页,你可以通过在左边添加和删除某些过滤器来缩小搜索结果的范围 从数据库中提取的内容是一个属性列表,可以通过以下方式进行筛选: 类型(公寓、营地、牧场、钓鱼营地、酒店、小屋) 活动(露营、皮划艇、狩猎) 地点(爱达荷州、伊利诺伊州、印第安纳州) 因此,每次我单击左侧的一个有效过滤器时,它都会将其添加到ajax请求中使用的过滤条件中。这将连接所需的最少数量的表并返回结果 因此,如果我玩游戏并激活/取消激活,我可以在大约一分钟内轻松完成大约20-30个ajax请求(除非您取消激活,

我基本上有这个网页,你可以通过在左边添加和删除某些过滤器来缩小搜索结果的范围

从数据库中提取的内容是一个属性列表,可以通过以下方式进行筛选:

  • 类型(公寓、营地、牧场、钓鱼营地、酒店、小屋)
  • 活动(露营、皮划艇、狩猎)
  • 地点(爱达荷州、伊利诺伊州、印第安纳州)
因此,每次我单击左侧的一个有效过滤器时,它都会将其添加到ajax请求中使用的过滤条件中。这将连接所需的最少数量的表并返回结果

因此,如果我玩游戏并激活/取消激活,我可以在大约一分钟内轻松完成大约20-30个ajax请求(除非您取消激活,否则您一次只能过滤每种类型中的一个)

问题:我想知道我是否应该提取所有可能的属性并过滤它们,而不是按照每个ajax请求查询数据库,每个事务至少有2-3个
左连接


将有不到100个属性,我不会处理成百上千个属性。

您能否重新编写ajax请求,以便它不返回属性列表,而只返回它们的ID?这是否减少了左连接的数量


然后,您可以在这些ID之间循环,调用另一个ajax请求,以获取以前筛选中尚未缓存的属性。

绝对:提取完整的数据集并对其进行筛选。假设每个Ajax请求需要100毫秒。您可能已经在谈论在应用程序中引入2-3秒的延迟,而对于您的小数据集,您实际上并不需要它

如果你正在缩小结果列表,“你也可以成为你的朋友。考虑将各种可过滤属性表示为类,并将用户选择的过滤器添加到其父过滤器,然后使用CSS显示或隐藏相关结果

例如,如果您将所有结果作为父项下的
LI
s,则
可能表示用户对所有爱达荷公寓项目进行了筛选,而以下CSS将隐藏其他项目:

.apartment .camp, .apartment ranch ... { display : none; }
.idaho .illinois, .idaho indiana{ display: none; }
使用这种方法,您只需点击一个服务器,就可以依靠browser+JavaScript来处理其余部分(因为您使用的是布尔比较——结果要么有属性,要么没有属性——它可能适合您)。不管怎样,即使在筛选时手动选择节点也会感觉到快照,而不是发送每个筛选器操作的请求。另外,现在您可以缓存单个数据库查询,如果需要运行复杂的查询,可能会节省大量开销

全套上菜