文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  优化 InnoDB 查询

10.5.6 优化 InnoDB 查询

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

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

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

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

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

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