gpt4 book ai didi

sql - 使用 IN 运算符优化 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 09:19:51 25 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中有一个相当大的表,其中包含产品。他们每个人都有自己的id和categoryId字段,其中有一个属于该产品的类别id。现在我有一个查询,可以从给定类别中提取产品,例如:

SELECT * FROM products WHERE categoryId IN ( 1, 2, 3, 4, 5, 34, 6, 7, 8, 9, 10, 11, 12 )

当然,可以有 WHERE 子句和 ORDER BY 排序,但不是在这个东西中。假设这些产品有25万,每天的访问量超过10万。在这种情况下,slow_log 表中记录了这些具有较大生成时间的查询的权重。

您对如何优化给定问题有任何想法吗?

表引擎是MyISAM。

最佳答案

在这种情况下,categoryId 上的索引不会有帮助,IN (...) 查询无论如何都会产生序列扫描而不是索引查找。

我会考虑首先重新设计系统以摆脱多个类别选择,如果不合适,则缓存查询结果。

例如,您可以创建一个辅助表 items_category_groups(hash, item_id),并在客户端查询多个类别后散列它们的组合 id 并查找此表。如果没有找到,则进行一次昂贵的查询并填充此表。如果找到,则进行一个连接这些表的廉价查询。其他缓存工具(例如 memcached)也可以使用。

关于sql - 使用 IN 运算符优化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408250/

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