查看“SELECT语句优化”的源代码
←
SELECT语句优化
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
查询以SELECT语句的形式执行数据库中的所有查找操作。调优这些语句是首要任务,无论是为了实现动态网页的次秒级响应时间,还是为了大幅缩短生成大型夜间报告所需的时间。 除了SELECT语句,查询的调优技术也适用于诸如CREATE TABLE...AS SELECT、INSERT INTO...SELECT和DELETE语句中的WHERE子句等构造。这些语句有额外的性能考虑,因为它们将写操作与面向读取的查询操作结合在一起。 NDB Cluster支持联接推送优化,其中符合条件的联接操作会完整地发送到NDB Cluster数据节点,然后在它们之间进行分布并并行执行。有关此优化的更多信息,请参见NDB推送联接的条件。 优化查询的主要考虑因素包括: *要加快慢速的SELECT ... WHERE查询的速度,首先要检查是否可以添加索引。在用于WHERE子句的列上设置索引,可以加快评估、筛选和最终结果的检索速度。为了避免浪费磁盘空间,构建一个小的索引集,可以加快应用程序中使用的许多相关查询的速度。 索引对于涉及不同表的查询特别重要,使用诸如联接和外键等功能。您可以使用EXPLAIN语句确定哪些索引用于SELECT查询。 *隔离和调优查询中任何耗时过长的部分,例如函数调用。根据查询的结构,函数可能会针对结果集中的每一行调用一次,甚至对表中的每一行调用一次,从而极大地放大任何低效性。 *尽量减少查询中对整个表的完全扫描次数,特别是对于大型表。 *定期使用ANALYZE TABLE语句保持表统计信息的最新状态,以便优化器具有构建高效执行计划所需的信息。 *了解针对每个表的存储引擎的调优技术、索引技术和配置参数。InnoDB和MyISAM都有一套指南,用于启用和维持查询的高性能。 *可以使用“优化InnoDB只读事务”中的技术,对InnoDB表的单个查询事务进行优化。 *避免以使查询难以理解的方式转换查询,特别是如果优化器自动执行某些相同的转换。 *如果一个性能问题无法轻松解决基本准则中的一个,通过阅读EXPLAIN计划并调整索引、WHERE子句、联接子句等来调查特定查询的内部细节。(当您达到一定的专业水平时,阅读EXPLAIN计划可能是每个查询的第一步。) *调整MySQL用于缓存的内存区域的大小和属性。通过有效利用InnoDB缓冲池、MyISAM键缓存和MySQL查询缓存,重复查询在第二次和后续次数从内存中检索结果,从而运行更快。 *即使对于使用缓存内存区域运行快速的查询,您可能仍然可以进一步优化,使其需要更少的缓存内存,从而使您的应用程序具有更好的可伸缩性。可伸缩性意味着您的应用程序可以处理更多并发用户、更大的请求等,而不会出现性能大幅下降。 *处理锁定问题,其中您的查询速度可能会受到其他会话同时访问表的影响。
返回至“
SELECT语句优化
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息