我有一个表,其中用户的电视节目库存储,我想改善它
该表包含以下列:
USER_ID SHOW_ID
STATUS PROGRESS
|上一集观看
IS_FAVORITE RATING
我有以下索引: USER_ID & SHOW_ID
|初级 USER_ID
|外键需要 SHOW_ID
|外键需要
USER_ID & STATUS USER_ID & IS_FAVORITE
SHOW_ID & STATUS SHOW_ID & IS_FAVORITE
我有大约20m行,数据重约750mb,索引重约2gb,总共约2.75gb我认为索引太多了,但可能它们确实需要提高性能,我应该保持这样还是应该删除最后4个索引?为什么?
1条答案
按热度按时间col17t5w1#
与数据相比,索引的大小看起来确实相当大。
但是,问题的答案在很大程度上取决于对该表运行的查询。你应该知道你的查询,这样你就可以一个一个地分析它们:如果你找到了一个没有查询使用的索引,那么就删除它。
如果您不知道自己的查询,并且运行的是MySQL5.6或更高版本,那么可以使用
PERFORMANCE_SCHEMA
访问索引io统计信息(自上次数据库重新启动以来)。这可用于检测未使用的索引,如:有关详细信息,请参阅此讨论。不过,在使用这种方法时要小心:您可能有一个依赖于古怪索引的每月或季度查询,它可能不会显示在短期分析中。