“良好的替代方案/实践”;例如;使用PostgreSQL和PHP?

“良好的替代方案/实践”;例如;使用PostgreSQL和PHP?,php,postgresql,sql-like,Php,Postgresql,Sql Like,我正在使用一个我无法控制的Postgres数据库。我正在构建一个日历,用于查看资源(物理项目)在特定的一天是在线还是离线。不幸的是,如果他们脱机,我只能通过在文本字段中查找资源名称来确认这一点 我一直在用 select * from log WHERE log_text LIKE 'Resource Kit 06%' 问题是,当我们使用180多次(每天至少6个资源)构建日历时,速度可能会很慢。有人知道加快速度的方法吗(记住我不能修改数据库)。另外,如果在数据库端我无能为力,那么在php端我能做

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

我一直在用

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

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

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

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

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

另一种方法是在数据库中使用触发器,它可以将所需的信息以更索引的方式插入到另一个表中。但若并没有管理数据库的权限,它可能是死胡同


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

您可以通过cron作业将表复制到另一个数据库应用程序(可能只是一个键/值存储)并在那里进行查询吗?对不起-我只想到这样的黑客;)你能把整张表的定义贴出来吗?当知道额外的列,尤其是它们的索引时,可能会有一些优化的潜力。您目前如何将您的选择限制在某一天?您能否再解释一下:为什么您无法在一次选择中获得所有内容?