gpt4 book ai didi

MySQL 3表合并及搜索优化

转载 作者:行者123 更新时间:2023-11-29 14:26:03 25 4
gpt4 key购买 nike

谁能告诉我这个 MySQL 查询有什么问题吗?

select distinct(a.productId)
from product a
left join product_keyword b
on b.productId = a.productId
left join keywords c
on c.keywordId = b.keywordId
where a.productName LIKE '%truck%' OR c.value LIKE '%truck%'
limit 100;

实际上,我需要连接 3 个表(productproduct_keywordkeywords)并根据用户输入进行搜索。一个产品可以有多个关键字,我将其存储(来自 product_keywordtable 关键字的 keywordId)。

有人可以帮我吗?

最佳答案

当您在 LIKE 搜索的前缀中使用 % 通配符时,MySQL 无法利用任何索引进行搜索。相反,MySQL 必须扫描所有行。

您至少应该在连接列(productID 和 keywordsID)上有索引,以便 MySQL 能够更快地执行连接操作。但是,如果结果集太大,MySQL 也会对 JOIN 执行扫描。

最有可能的是,MySQL正在扫描product中的每一行,然后执行与product_keyword的连接,然后执行与关键字的连接。然后,它检查是否可以根据 WHERE 子句排除该行。一旦返回 100 行,它就会停止。

关于MySQL 3表合并及搜索优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936113/

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