我在想......我有一个网站,里面有很多搜索/排序。如果我将每次搜索的结果项ID缓存到MEMORY表中,然后简单地执行WHERE item_id IN(“1”,“5”,“44”,“67”),该怎么办。
如果特定查询没有值,则执行完整查询,并将ID写入MEMORY表。
这会显着提升性能吗?或者我应该只将每个搜索结果的HTML缓存到一个html文件中并显示它?
答案 0 :(得分:1)
潜在的性能提升取决于重用相同查询的频率。
将会有一个额外的步骤来扫描MEMORY表以查看该查询是否最近已运行。对于包含小数据集的唯一查询,这实际上可能会降低您的性能并不必要地增加系统的复杂性。
至于将HTML放入某种类型的输出缓存中,我建议你这样做,不管你的流量是否高到足以证明这一点,你可能会做任何查询缓存。
最重要的是,只在必要时进行优化。不必要地增加系统的复杂性不会增加价值,并且可能使维护更加困难。
答案 1 :(得分:0)
正如其他地方所说,如果您的查询被重用,那么您可以提升性能。 但是您的查询也必须返回相同的结果。如果您的数据集不是静态的,那么无论如何您都必须重做查询。
有很多选项可以提高性能。如果您已经用尽了索引的所有选项,增加了服务器上的硬件,增加了服务器和客户端之间网络的带宽,那么您可以探索其他一些选项:
与往常一样,系统的性能取决于很多因素。要真正回答您的问题,您需要衡量系统的性能。如果您有疑问,请测量。我发现有几次性能增益可以忽略不计。
您还必须考虑通过此类性能优化添加到系统的复杂性,以及刷新缓存,如果数据发生变化会发生什么,如何处理所有这些问题。