10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

8.2.1优化SELECT语句

的形式的查询选择语句,执行数据库中的所有查找操作。优化这些语句是最优先考虑的,无论是为动态网页实现亚秒级的响应时间,还是为生成庞大的夜间报告而减少数小时的时间。

除了选择语句,查询的调优技术也适用于诸如创建表……作为选择插入…选择,在哪里条款删除语句。这些语句具有额外的性能考虑因素,因为它们将写操作与面向读的查询操作结合在一起。

NDB Cluster支持一种join下推优化,通过这种优化,一个合格的join将被整体发送到NDB Cluster数据节点,在这些节点中,它可以被分布并并行执行。有关此优化的更多信息,请参见NDB下推连接的条件

优化查询的主要考虑事项是:

  • 使…变慢选择……在哪里查询更快,首先要检查的是是否可以添加指数.控件中使用的列上设置索引在哪里子句,以加速结果的评估、过滤和最终检索。为了避免浪费磁盘空间,可以构造一组索引来加速应用程序中使用的许多相关查询。

    索引对于引用不同表的查询尤其重要,使用的特性包括连接外键.你可以使用解释语句确定哪些索引用于选择.看到8.3.1节,“MySQL如何使用索引”第8.8.1节,“使用EXPLAIN优化查询”

  • 隔离和调优查询的任何部分,例如函数调用,它需要花费过多的时间。根据查询的结构,可以对结果集中的每一行调用一次函数,甚至可以对表中的每一行调用一次函数,这将极大地放大效率。

  • 尽量减少全表扫描在您的查询中,特别是对于大表。

  • 属性保持表统计信息最新分析表语句,因此优化器拥有构建高效执行计划所需的信息。

  • 学习特定于每个表的存储引擎的调优技术、索引技术和配置参数。这两个InnoDBMyISAM拥有一组指导原则,用于在查询中启用和维持高性能。有关详细信息,请参见第8.5.6节,“优化InnoDB查询”第8.6.1节,“优化MyISAM查询”

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

  • 避免以难以理解的方式转换查询,特别是在优化器自动执行某些相同的转换时。

  • 如果性能问题不能通过基本原则轻松解决,可以通过阅读解释计划并调整你的指数,在哪里子句,连接子句,等等。(当你达到一定的专业水平,阅读解释计划可能是解决每个问题的第一步。)

  • 调整MySQL用于缓存的内存区域的大小和属性。高效利用InnoDB缓冲池MyISAM键缓存和MySQL查询缓存,重复查询运行得更快,因为结果在第二次和以后的时间从内存中检索。

  • 甚至对于使用缓存内存区域快速运行的查询,您仍然可以进一步优化,使它们需要更少的缓存内存,使应用程序更具伸缩性。可伸缩性意味着您的应用程序可以处理更多的并发用户、更大的请求等等,而不会经历性能的大幅下降。

  • 处理锁定问题,其中查询的速度可能会受到同时访问表的其他会话的影响。