我有一个项目表,每个项目都有一个 a_level、b_level 和一个 item_id。任何 b_level 仅专用于一个 a_level(例如:b_level 14 仅是 a_level 2 的“子级”)
假设我们有数百万个项目,所有项目都插入一次,然后只请求 SELECT。
如果我根据 item_id 选择一个项目,那么我需要索引 item_id 列。这将使 MySQL 查看所有数百万个项目,这很糟糕,因为我已经有了 a_level 和 b_level 信息。所以我想如果我根据特定级别选择一个项目并且我在该列上有一个索引,那么 MySQL 将不必查看所有数百万个项目,只需查看具有该特定级别的项目。
如果我在 a_level、b_level(当然还有 item_id)和 SELECT WHERE a_level= b_level= item_id= 上都进行索引,会不会很糟糕?我想只有 b_level 和 item_id 上的 INDEX 和 SELECT WHERE b_level= AND item_id= 就足够了/最好的解决方案?
所以,因为我有 a_level 和 b_level(我所说的任何 b_level 都是只有一个 a_level 的“子级”),为拾取物品而创建的最有效的 SELECT 和 INDEX 是什么?