mysql-我应该如何索引这个表?

nom7f22z  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(310)

我有一个表,其中用户的电视节目库存储,我想改善它
该表包含以下列:
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个索引?为什么?

col17t5w

col17t5w1#

与数据相比,索引的大小看起来确实相当大。
但是,问题的答案在很大程度上取决于对该表运行的查询。你应该知道你的查询,这样你就可以一个一个地分析它们:如果你找到了一个没有查询使用的索引,那么就删除它。
如果您不知道自己的查询,并且运行的是MySQL5.6或更高版本,那么可以使用 PERFORMANCE_SCHEMA 访问索引io统计信息(自上次数据库重新启动以来)。这可用于检测未使用的索引,如:

SELECT 
    object_schema,
    object_name,
    index_name
FROM 
    performance_schema.table_io_waits_summary_by_index_usage 
WHERE
    index_name IS NOT NULL
   AND count_star = 0
ORDER BY object_schema, object_name;

有关详细信息,请参阅此讨论。不过,在使用这种方法时要小心:您可能有一个依赖于古怪索引的每月或季度查询,它可能不会显示在短期分析中。

相关问题