gpt4 book ai didi

php - 有多个 OR 子句会减慢查询速度吗

转载 作者:行者123 更新时间:2023-12-01 00:23:39 25 4
gpt4 key购买 nike

我有一个函数可以转换这个字符串

[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] 用于描述第三组的战斗participates which not allied with player party or enemy party 而 [battle party reality marble] 用于描述能力

我用 | 分隔每个标签,这样当我从数据库中提取字符串并将每个标签输出到页面时,我可以在 PHP 中分解字符串,类似于此处提出问题时的建议标签

现在,虽然我可以限制用户可以在搜索中使用的标签数量,例如本网站如何将问题中使用的标签数量限制为 5 我想尽可能避免这种情况,WHERE我生成的子句在技术上可以有无限的 OR s 因为它是如何生成的

我想知道,如果我在查询中使用太多 OR,mysqli 中的准备语句是否会变慢

最佳答案

性能影响不是因为OR组合,而是因为LIKE '%search'不能使用索引。

实际上,您的数据库规范化很差 - 因此很难获得您需要的东西,而且它需要比必要更多的性能。

关于php - 有多个 OR 子句会减慢查询速度吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259810/

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