MySQL 9.0 发行说明
要为 InnoDB
表优化查询,请在每个表上创建一组适当的索引。有关详细信息,请参阅 第 10.3.1 节“MySQL 如何使用索引”。请遵循以下 InnoDB
索引指南
因为每个
InnoDB
表都有一个 主键(无论您是否请求),请为每个表指定一组主键列,这些列用于最重要和时间最关键的查询。不要在主键中指定太多或太长的列,因为这些列值会在每个辅助索引中重复。当索引包含不必要的数据时,读取这些数据的 I/O 和缓存这些数据的内存会降低服务器的性能和可扩展性。
不要为每一列都创建一个单独的 辅助索引,因为每个查询只能使用一个索引。对很少测试的列或只有几个不同值的列的索引可能对任何查询都没有帮助。如果您对同一个表有许多查询,测试不同的列组合,请尝试创建少量的 连接索引,而不是大量的单列索引。如果一个索引包含结果集所需的所有列(称为 覆盖索引),则查询可能能够完全避免读取表数据。
如果索引列不能包含任何
NULL
值,请在创建表时将其声明为NOT NULL
。当优化器知道每一列是否包含NULL
值时,它可以更好地确定哪个索引对查询最有效。您可以使用 第 10.5.3 节“优化 InnoDB 只读事务” 中的技术优化
InnoDB
表的单查询事务。