Documentation Home
MySQL 8.0 参考手册  / 第8章优化  / 8.5 优化 InnoDB 表  /  8.5.6 优化 InnoDB 查询

8.5.6 优化 InnoDB 查询

要调整对表的查询,请InnoDB在每个表上创建一组适当的索引。有关详细信息,请参阅 第 8.3.1 节,“MySQL 如何使用索引”。请遵循以下InnoDB索引指南:

  • 因为每个InnoDB表都有一个 主键(无论您是否请求),请为每个表指定一组主键列,这些列在最重要和时间关键的查询中使用。

  • 不要在主键中指定太多或太长的列,因为这些列值在每个二级索引中都是重复的。当索引包含不必要的数据时,读取这些数据的 I/O 和缓存它的内存会降低服务器的性能和可伸缩性。

  • 不要为每一列创建单独的 二级索引 ,因为每个查询只能使用一个索引。很少测试的列或只有几个不同值的列的索引可能对任何查询都没有帮助。如果您对同一个表有很多查询,测试不同的列组合,请尝试创建少量的 连接索引而不是大量的单列索引。如果索引包含结果集所需的所有列(称为 覆盖索引),则查询可能完全避免读取表数据。

  • 如果索引列不能包含任何 NULL值,NOT NULL请在创建表时声明它。当优化器知道每个列是否包含 NULL值时,它可以更好地确定哪个索引对查询最有效。

  • 您可以使用第 8.5.3 节,“优化 InnoDB 只读事务”InnoDB中的技术 优化表的单查询事务 。