首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提供分类/搜索结果过滤所需的建议,数据库查询次数最少

提供分类/搜索结果过滤所需的建议,数据库查询次数最少
EN

Stack Overflow用户
提问于 2011-05-22 12:58:40
回答 2查看 248关注 0票数 2

我正在一个网上商店工作,需要一些关于收集数据的最佳方法采取一些建议,以显示价格,免费送货和其他选项中涉及的数据库计数的过滤选项。我的脚本是在mySQL上用PHP编写的。

如果你查看亚马逊的产品类别(即http://www.amazon.com/gp/search/ref=sr_nr_scat_14219011_ln?rh=n%3A14219011%2Ck%3Awii&keywords=wii&ie=UTF8 ),你会看到左侧边栏上的过滤选项旁边是每个类别的结果数量。例如,任天堂有163个匹配项。

我不认为这是存储在一个表中,因为有太多的变量,你会不断更新数据库,但为每个过滤组运行一个查询,每个页面加载5-6个查询似乎也是不切实际的。

在缓存中检索一个大型数据集,使用PHP过滤结果,然后只显示几个结果,是不是更符合逻辑,或者可能有数千个项目的查询比运行几个辅助计数查询更糟糕?有没有其他的解决方案?

EN

回答 2

Stack Overflow用户

发布于 2011-05-22 13:17:36

代码语言:javascript
运行
复制
SELECT COUNT(*) cnt, category FROM table WHERE category IN() GROUP BY category
票数 1
EN

Stack Overflow用户

发布于 2011-05-22 17:31:39

我不认为这是存储在一个表中,因为有太多的变量,你会不断更新数据库,但为每个过滤组运行一个查询,每个页面加载5-6个查询似乎也是不切实际的。

它实际上是实用的。如果您可以使用索引来达到小型数据集(几百个)上的SQL计数,那么它们的速度会非常快。(但请参阅下面的内容,因为不这样做确实更好。)

在缓存中检索一个大型数据集,使用PHP过滤结果,然后只显示几个结果,是不是更符合逻辑,或者可能有数千个项目的查询比运行几个辅助计数查询更糟糕?

这样做最终会比使用SQL慢。一旦整个缓存不再适合内存,您最终将求助于将其存储在磁盘或类似的东西上。在这一点上,您最终将以与在数据库中进行过滤的全表扫描一样的方式遍历缓存的数据。

还有其他解决方案吗?

是。它使用Memcache来避免重复查询:

http://php.net/manual/en/book.memcached.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6086156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档