mysql/innodb表的索引部分?

mysql/innodb表的索引部分?,mysql,indexing,innodb,Mysql,Indexing,Innodb,如果这是一个愚蠢的问题,我很抱歉(因为听起来不太可能) 我有一张2000万行的桌子。但是,这些行中只有大约300K行被定期访问,并且可以在名为“app_user=1”的列条件中识别它们 无论如何,我是否可以索引这些行,并且当我调用select时,我将确保传递条件 添加一个名为app_user的列并在其上建立索引,然后在查询中传入“WHERE app_user=1” 您可以进一步根据该列对表进行分区。我建议将表拆分为两个单独的表。但如果您不想这样做,如果您总是要在查询中包含“where app_u

如果这是一个愚蠢的问题,我很抱歉(因为听起来不太可能)

我有一张2000万行的桌子。但是,这些行中只有大约300K行被定期访问,并且可以在名为“app_user=1”的列条件中识别它们


无论如何,我是否可以索引这些行,并且当我调用select时,我将确保传递条件

添加一个名为app_user的列并在其上建立索引,然后在查询中传入“WHERE app_user=1”


您可以进一步根据该列对表进行分区。

我建议将表拆分为两个单独的表。但如果您不想这样做,如果您总是要在查询中包含“where app_user=1”,那么执行此操作的最高性能方法是在表上创建一个主键,该主键将app_user列作为键的第一部分。InnoDB将使用它作为聚集索引,从而为您节省一些额外的磁盘访问。您可以按如下方式创建表:

创建表testTable( app_用户tinyint未签名默认值0, id int无符号非空, 名称varchar(255)默认值“”, 主键k1(应用程序用户,id) )引擎=InnoDB

一位朋友不久前在InnoDB中写了这篇关于聚集索引的文章:

听起来表分区可能会有所帮助:谢谢你的提示!非常感谢。如果你把它加起来作为答案,我会投赞成票