首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以使用MySQL临时表存储搜索结果?

是否可以使用MySQL临时表存储搜索结果?
EN

Stack Overflow用户
提问于 2011-10-19 09:55:50
回答 1查看 1.1K关注 0票数 1

我有一个用PHP编写的搜索页面,它需要在MySQL数据库中搜索,结果需要是可排序的。此搜索页面将由许多用户(任何时候>1000)访问。

但是,在MySQL中对搜索结果进行排序是不可行的,因为它会非常慢。

我正在考虑将每个搜索结果存储到一个临时表(而不是MySQL临时表)中,表名存储在另一个表中以供参考,如下所示:

代码语言:javascript
运行
复制
| id | table_name | timeout |
-----------------------------
| 1  | result_1   | 10000   |
| 2  | result_2   | 10000   |

然后,只要需要,我就可以使用临时表对任何搜索结果进行排序,而不需要重新构造(经过一些修改)查询。

将根据指定的超时时间删除每个表。

假设我不能修改查询中使用的现有表的结构,这是一个好的解决方案还是有更好的方法?敬请指教。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-19 10:08:40

当您只想在内存中缓存搜索结果时,没有必要费心将结果存储在持久数据库中。您是否需要对关系数据进行索引访问?如果答案是否定的,请不要将其存储在MySQL数据库中。

我知道phpbb (一个支持MySQL后端的开源网络论坛)使用键值存储来支持它的搜索结果。如果论坛被配置为给你一个特定结果页面的链接(带有URL查询字符串中的搜索id散列),那么这个链接将在一段时间内有效,但最终会被从缓存中清除,就像你想要的那样。但是,如果您是在MySQL上设置的,那么实现一个完整的数据库抽象层可能过于夸张了。不管怎么说:

http://wiki.phpbb.com/Cache

您只需使用memcached或其他工具来存储结果数据,就可以轻松地检索数据并在PHP中对其进行排序。还有一些特定于PHP的缓存框架,可以最大限度地减少从解释器加载和卸载数据的成本:

https://en.wikipedia.org/wiki/List_of_PHP_accelerators

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

https://stackoverflow.com/questions/7815723

复制
相关文章

相似问题

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