php - 我应该如何查询 MySQL 以及如何缓存 MySQL 的结果?

标签 php sql mysql database

在你们所有人的帮助下,我终于成功地让 Solr 工作了,所以谢谢你们! 而且我不得不说,我现在明白你为什么推荐它了,它真的很强大。

现在,讨论这个问题...

我已将所有“可搜索”信息索引到 Solr 中,我的计划是查询 Solr,然后获取查询结果的 ID:s(所有记录(即每条记录都有一个 ID 字段值),然后我用它来查询 MySQL 并获取其余信息。 因此,首先查询 Solr,接下来 solr 发送回与查询匹配的所有广告的 id:s,然后我使用 ID:s 查询 MySQL 以获取其余信息。

我的问题是,当使用 MySql 执行该部分时,我是否应该将所有收到的 ID:s 保存到一个 array 中,然后 query mysql 查找所有记录那些ID:s? 我应该做这样的事情吗? (可能包含一些代码错误):

       for ($i=0; $i<$id_from_solr.length; $i++){
       mysql_query("SELECT * FROM table_name WHERE ad_id=$id_from_solr[$i]");
       }

上面似乎不是像一个好的解决方案,因为它每次再次循环时都会执行“新查询”!

你会怎么做?

后续问题: 与不使用排序函数相比,在 MySQL 查询中添加排序函数会减慢速度吗?例如:

      ORDER BY insert_date ASC

最后一个问题: 是否有办法缓存 MySQL 结果,以便在排序时,我不必进行新查询?

非常感谢!

如果您需要更多意见,请告诉我,我将更新此问题!

最佳答案

问题 1(检索 ID,然后查询数据库):为什么不从 Solr 查询中返回一些字段,这样您就不必总是访问数据库?

Q2(性能和排序):嗯,排序代表了对数据执行的额外任务,因此必然会为数据库添加一些工作:这当然可以最小化如果您的 ORDER BY 列上有索引。

Q3(捕获 MySql 查询):您可以打开 MySql 缓存(如果请求与前一个请求匹配,假设数据未更改,它将返回结果的缓存副本)在此期间),或者使用数据库外部的缓存层,例如 EhCache:

http://ehcache.org/

关于php - 我应该如何查询 MySQL 以及如何缓存 MySQL 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2173201/

相关文章:

php - 使用 PHP 发送 html 邮件

PHP:将文本区域行分解为单独的数组元素

mysql - 使用多个表进行查询

php - 如何在提交之前预先检查不同 sql 表中的表单值 - symfony

WHERE 子句 MySQL 中的 PHP 字符串变量

php - Slim Framework - PDO 对象已创建但似乎不在范围内

php - 将数据从 View 传递到 Controller (Zend)

sql - 如何选择SQL数据库?

sql - 如何在远程服务器上创建到本地PC的链接服务器

mysql - 无法从函数返回