php - MySQL 搜索优化以获得更好的性能

标签 php mysql search

我有一个包含关键字列表的数组,

$arr = array('伦敦','英格兰','足球',...);

该数组可以有第 N 个关键字。

我需要在 SQL 查询上使用它,但我不想像这样重复太多。

从 t1 中选择 *,其中 title LIKE('%$arr[0]%') 或 title LIKE('%$arr[1]%') [...]

只需要一个更好的解决方案,因为每个关键字都会过滤掉记录。

谢谢

最佳答案

一种解决方案是创建一个查找表,每当创建或更改行时,该表都会填充 rowid 和 keywordsid。

然后您可以跳过所有 LIKE 并获得更高的性能。

插入和更新上的触发器应该可以工作,但插入和更新时会花费更多的性能。

你只需使用

SELECT * FROM t1 WHERE id in (SELECT id FROM lookup WHERE keywordid IN ())

如果关键字很多,您可以更多地使用子查询来获取关键字 ID,或者如果关键字较少,则直接在代码、字典等中使用缓存的查找结构。

关于php - MySQL 搜索优化以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245552/

相关文章:

php - mysql存储过程中如何使用赋值运算符

mysql - 发送电子邮件以编辑 MediaWiki

arrays - Powershell - 使用 Quest CMDlet 搜索和比较数组

java - 多线程遍历和枚举目录

php - 查找文本将占用多少行

PHP 不将日期时间插入 mysql 表

java - 这个 MYSQL 查询有什么问题

algorithm - 最佳订单履行

php - MySQL 表 - 如何在十亿行表上快速插入?

php - 是否可以使用 cURL 使用 POST 流式上传文件?