### 8.2.7 其他优化提示

[](<>)[](<>)

本节列出了一些提高查询处理速度的其他技巧：

-   如果您的应用程序发出多个数据库请求以执行相关更新，则将这些语句组合到一个存储的例程中可以提高性能。同样，如果您的应用程序基于多个列值或大量数据计算单个结果，则将计算组合到可加载函数中可以提高性能。然后，由此产生的快速数据库操作可供其他查询、应用程序甚至用不同编程语言编写的代码重用。看[第 25.2 节，“使用存储的例程”](stored-routines.html)和[向 MySQL 添加函数](https://dev.mysql.com/doc/extending-mysql/8.0/en/adding-functions.html)了解更多信息。

-   修复发生的任何压缩问题`档案`表，使用[`优化表`](optimize-table.html).看[第 16.5 节，“ARCHIVE 存储引擎”](archive-storage-engine.html).

-   如果可能，将报告分类为“实时”或“统计”，其中统计报告所需的数据仅从实时数据定期生成的汇总表中创建。

-   如果您有不符合行列表结构的数据，您可以将数据打包并存储到一个[`斑点`](blob.html)柱子。在这种情况下，您必须在应用程序中提供代码来打包和解包信息，但这可能会节省读取和写入相关值集的 I/O 操作。

-   对于 Web 服务器，将图像和其他二进制资产存储为文件，路径名存储在数据库中，而不是文件本身。大多数 Web 服务器比数据库内容更擅长缓存文件，因此使用文件通常更快。（尽管在这种情况下您必须自己处理备份和存储问题。）

-   如果您需要真正的高速，请查看低级 MySQL 接口。例如，通过访问 MySQL[`InnoDB`](innodb-storage-engine.html)要么[`MyISAM`](myisam-storage-engine.html)直接使用存储引擎，与使用SQL接口相比，可以大幅提升速度。

    同样，对于使用[`NDBCLUSTER`](mysql-cluster.html)存储引擎，您可能希望调查 NDB API 的可能用途（请参阅[MySQL NDB 集群 API 开发人员指南](https://dev.mysql.com/doc/ndbapi/en/)）。

-   复制可以为某些操作提供性能优势。您可以在副本之间分配客户端检索以分散负载。为避免在进行备份时减慢源速度，您可以使用副本进行备份。看[第十七章，*复制*](replication.html).
