gpt4 book ai didi

mysql - 如何使用 RLIKE 在两个表中进行搜索,其中一个表可以为空

转载 作者:行者123 更新时间:2023-11-29 20:24:49 27 4
gpt4 key购买 nike

我有以下查询:

SELECT p.partid, pp.partno, p.descr
FROM part p, partcreditor pc, partcreditor_partno pp
WHERE p.partid = pc.partid
AND pc.creditorid = pp.creditorid
AND p.partid = pp.partid
AND (p.partid RLIKE '$val' OR pp.partno_search RLIKE '$val' OR p.descr RLIKE '$val')

对于用户输入的每个单独的搜索词,都会添加另一行(例如查询中的最后一行)。

此查询运行速度非常快,但问题是表 partcreditor 没有表 part 的记录,因此不会返回任何内容。因此,我尝试使用左连接重写查询,但这使得查询非常慢。

有什么解决办法吗?

最佳答案

无法绕过它...您需要左连接。

但是,尝试将条件向上移动到连接条件中,如下所示:

SELECT p.partid, pp.partno, p.descr
FROM part p
JOIN partcreditor pc ON p.partid = pc.partid
LEFT JOIN partcreditor_partno pp ON p.partid = pp.partid
AND pc.creditorid = pp.creditorid
AND pp.partno_search RLIKE '$val'
WHERE p.partid RLIKE '$val'
OR p.descr RLIKE '$val'

对 id 列进行 RLIKE 有点奇怪。

由于您正在进行文本搜索,您会发现使用 FULLTEXT索引将显着提高性能。

关于mysql - 如何使用 RLIKE 在两个表中进行搜索,其中一个表可以为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349748/

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