我有一个函数可以把这个字符串
[games]|[nexis core]|[core]|[lemure lemure]|[chrome tower dlc]
进入这个where子句
WHERE
(
main.tags LIKE '%[games]%' OR
main.tags LIKE '%[nexis core]%' OR
main.tags LIKE '%[core]%' OR
main.tags LIKE '%[lemure lemure]%' OR
main.tags LIKE '%[chrome tower dlc]%'
)
在进行搜索的表中,一条记录将具有一个
tags
字段,如下所示[boss]|[lemure lemure]|[astra]|[divine]|[kamidori]|[3rd party]|[razil]|[core]
因此,当上述where子句运行时,它可以搜索
tags
字段,并且标记的顺序对搜索没有影响我将每个标签包含在
[]
中并对其进行LIKE
修饰的原因是,如果有人搜索标签party
,他们可能会得到[3rd party] [party members] [nunnally's battle party] [battle party reality marble]
,这与[3rd party]
完全不同。描述第3组参加的与玩家方或敌方方无关的战斗,而[battle party reality marble]
用于描述能力我用
|
分隔每个标签,以便当我从数据库中提取字符串并将每个标签输出到页面时,可以在PHP中爆炸该字符串,类似于在此处提出问题时的建议标签现在,尽管我可以限制用户可以在搜索中使用的标签数量,例如该站点如何将问题中使用的标签数量限制为5个,但我想尝试避免这种情况,请使用
WHERE
子句我生成的内容在技术上可以具有无限OR
,因为它的生成方式我想知道,如果我在查询中使用太多的
OR
,mysqli中的准备好的语句能否减慢速度? 最佳答案
对性能的影响不是由于OR
组合,而是由于LIKE '%search'
不能使用索引。
实际上,您的数据库已被严重规范化-因此,很难获得所需的信息,并且所需要的性能超出了必要。
关于php - 有多个OR类会降低查询速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19259810/