gpt4 book ai didi

mysql - 如何在 MySQL 中索引查找表

转载 作者:可可西里 更新时间:2023-11-01 08:56:44 26 4
gpt4 key购买 nike

我有一个 1000 万行的表 product,其中包含 color (int)、price (float)、weight (float)、unitprice (int)、 等字段。 .. 现在来自 Web 的用户动态生成查询以使用随机条件(这里必须有颜色)和排序方式从该表中查找数据

select * from product where color=1 and price >5 and price <220 and .... order by unitprice limit 75, 25;

select count(*) from product where color=3 and weight <500 and price <30 ... ;

如何在 MySQL 中使用大约 10 个可能的过滤字段(范围,排序......)索引表(InnoDB 或 NDB)?


编辑:据我所知,MySQL 很可能只会为查询选择一个索引,并且只有复合索引的左侧部分可以工作。显然索引所有可能的组合不是一个可行的选择,例如 (color, price, weight, create_date, unitprice, ....), (color, weight, price, create_date, unitprice , ....), (color, unitprice, weight, ....) ....并非所有条件都必须出现在所有查询中。

你会怎么做来索引这个表?

最佳答案

如果您想对任何 字段进行快速查找/过滤/排序,您必须在所有字段上放置索引。

如果颜色是必须的(即在每个查询中使用),最好在 (color, field) 上为您拥有的每个 field 创建复合索引。

如果 color 确实是每个常见查询的一部分,那么将聚集索引放在 (color, product_id) 上也可能值得一试。

关于mysql - 如何在 MySQL 中索引查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848858/

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