暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU 翻译] MySQL 8.5.6优化InnoDB查询

原创 由迪 2021-05-27
433

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

  • 因为每个InnoDB表都有一个 主键(无论您是否请求一个主键),所以请为每个表指定一组主键列,这些列用于最重要且时间紧迫的查询中。
  • 不要在主键中指定太多或太长的列,因为这些列值在每个辅助索引中都是重复的。当索引包含不必要的数据时,用于读取此数据的I / O和用于对其进行缓存的内存将降低服务器的性能和可伸缩性。
  • 不要 为每一列创建单独的 二级索引,因为每个查询只能使用一个索引。很少测试的列或只有几个不同值的列上的索引可能对任何查询都没有帮助。如果对同一个表有很多查询,测试不同的列组合,请尝试创建少量的 串联索引,而不是大量的单列索引。如果索引包含结果集所需的所有列(称为 覆盖索引),则查询可能完全避免读取表数据。
  • 如果索引列不能包含任何 NULL值,请NOT NULL在创建表时将其声明为。当优化器知道每一列是否包含NULL值时,它可以更好地确定哪个索引对查询最有效 。
  • 您可以InnoDB使用第8.5.3节“优化InnoDB只读事务”中的技术优化表的 单查询事务 。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论