gpt4 book ai didi

MySQL - 按多个类别(多行......)更快地搜索产品?

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:09 24 4
gpt4 key购买 nike

我有一大组数据(即每个表的 2000 万行)看起来有点像这样(我不是真的在处理产品和类别,而是同样的情况)

餐 table 用品

|id|name|created_at|
--------------------
|1 |....|2018-06...|
|2 |....|2018-06...|
|3 |....|2018-06...|
|4 |....|2018-06...|
|5 |....|2018-06...|
...etc.

和类别表

|id|product_id|category|description|
------------------------------------
|1 |1 | abc | def |
|2 |1 | ghi | jkl |
|3 |1 | mno | pqr |
|4 |2 | abc | stu |
|5 |2 | wvx | yz |
...etc

我想做的是搜索,找到有很多类别的产品,即。

SELECT DISTINCTROW * FROM product WHERE

product.id in (
SELECT categories.product_id FROM categories WHERE category = 'abc'
)
AND
product.id in(
SELECT categories.product_id FROM categories WHERE category = 'ghi'
)
AND
product.id in(
SELECT categories.product_id FROM categories WHERE category= 'mno'
)
AND 'some extra where' ORDER BY product.created_au LIMIT 10 offset 0

但这真的很慢......我已经尝试过不同的方法,但每个人至少需要 30 秒。

我已经为用于连接的列创建了索引。

所以基本上我想进行一次搜索,其中产品必须匹配一个或多个类别。另外,稍后,我想进行搜索以使产品与类别和描述相匹配(可能来自类别表中的不同行)。

有什么想法吗?或者我可以阅读更多关于此类案例的链接?

最佳答案

临时表应该有助于加快速度。

CREATE TEMPORARY TABLE tmpCategories( category_id INT)

找到一种方法将您要搜索的类别的 ID 插入到此表中。

然后写一个类似这样的连接:

SELECT p.* FROM product p
INNER JOIN categories c ON p.product_id = c.product_id
INNER JOIN tmpCategories tc ON tc.catrgory_id = c.category_id

您的查询可能与此不完全相同。但这种方法可能会加快速度。

附言我正在用手机打字,所以请原谅格式:)

关于MySQL - 按多个类别(多行......)更快地搜索产品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464285/

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