gpt4 book ai didi

mysql - 优化具有多个 CONCAT 子句的 SQL 语句?

转载 作者:行者123 更新时间:2023-11-29 08:29:32 35 4
gpt4 key购买 nike

SELECT
*

FROM
pages


INNER JOIN cms_collection ON cms_collection.collection_id LIKE

(
CONCAT('%', pages.page_id, '/heading%') OR
CONCAT('%', pages.page_id, '/content%')
)

WHERE
site_id = 51

LIMIT 10

堆叠的 CONCAT 导致查询速度 super 慢,有什么办法可以优化吗?实际上,这个语句似乎没有按预期工作。我想根据 collection_id 是“%pages.page_id/heading%”还是“%pages.page_id/content%”来执行 LIKE。

如果仅存在第一个 CONCAT,则此语句可以正常工作。

最佳答案

OR 是逻辑运算符。它没有定义 LIKE 的替代方案。您需要将其分成两个 LIKE 子句。

SELECT * FROM pages
INNER JOIN cms_collection ON
(cms_collection.collection_id LIKE CONCAT('%', pages.page_id, '/heading%')) OR
(cms_collection.collection_id LIKE CONCAT('%', pages.page_id, '/content%'))
WHERE site_id = 51 LIMIT 10

如果仍然很慢,请将您的表结构和 EXPLAIN 的输出添加到您的问题中。

关于mysql - 优化具有多个 CONCAT 子句的 SQL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053280/

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