gpt4 book ai didi

php - 使用 PostgreSQL 和 PHP 的 "LIKE"的好的替代/实践?

转载 作者:搜寻专家 更新时间:2023-10-31 21:43:41 27 4
gpt4 key购买 nike

我正在使用我无法控制其管理的 Postgres 数据库。我正在构建一个日历,用于查看资源(物理项目)在特定日期是在线还是离线。不幸的是,如果它们处于离线状态,我只能通过在文本字段中查找资源名称来确认这一点。

我一直在用

select * from log WHERE log_text LIKE 'Resource Kit 06%'

问题是,当我们使用 LIKE 180+ 次(每天至少 6 个资源)构建日历时,速度可能会很慢。有没有人知道加快速度的方法(请记住我无法修改数据库)。另外,如果我在数据库端无能为力,那么我在 php 端有什么可以做的吗?

最佳答案

我认为,为此需要某种形式的缓存。由于您无法更改数据库中的任何内容,因此您唯一的机会就是从中提取数据并将其以更易于访问和更快的形式存储。这在很大程度上取决于插入表中的数据的频率。如果插入的数量多于选择的数量,它可能不会有太大帮助。其他方式可能会提高性能。

也许你可以考虑使用Lucene搜索引擎,它可以进行全文索引。有来自 Zend 的实现甚至 Apache 也有一些 http service .但是我没有机会测试它。

如果您不使用那么健壮的东西,您可以在 php 中编写自己的缓存机制。它不会像 postgres 一样快,但可能比没有索引的 LIKE 查询快。如果您的查询需要更复杂(条件、分组、排序...),您可以使用 SQLite 数据库,它是基于文件的,不需要在服务器上运行额外的服务。

另一种方法是在数据库中使用触发器,它可以将所需信息以更多索引方式插入数据存储到其他表中。但如果没有管理数据库的权限,这可能是死路一条。

如果您需要更具体的信息,请更具体地说明您的问题。

关于php - 使用 PostgreSQL 和 PHP 的 "LIKE"的好的替代/实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com