MySQL百万级数据量查询优化

本文介绍了数据库查询优化的基本原则,包括减少使用通配符查询、避免联表查询,并详细讲解了如何利用索引来提高查询效率。此外,还介绍了MySQL查询分析器的使用方法,帮助开发者更好地理解查询计划。

先说下背景,之前写代码基本不用考虑数据库优化,当然,一些基本的mysql优化专业素养还是有的,直到公司业务流水太大,做数据统计的时候请求超时-_-

我才意识到,作为一名优秀的程序媛,数据优化是必不可少,能用上就千万别偷懒..

对查询进行优化,要尽量避免全表扫描

1. 基础优化,入门优化

> a.少用*


 把select *改成具体要筛选的字段,哪怕是全部字段
 把count(*)改成count(id)等对主键或索引的统计


> b.少用联表查询


 数据量不大的表联查不太明显,蛋当表里数据达到十万百万,那么你联表查询的数据量很有可能达到千万级数据量

2. 常用优化技能

建立索引

说到索引要先熟悉两个mysql查询分析器

explain sql语句
desc sql语句

其次我们熟悉查询分析结果中的type: 表示表的连接类型,性能由好到差的连接类型为下面顺序

system: 表中只有一行,即常量表,是const联接类型的一个特例
const: 单表中最多有一个匹配行,如primary key或unique index
eq_ref: 对于前面的每一行,在此表中只查询一条记录,也就是多表连接中使用primary key或unique index
ref: 与eq_ref类似,区别在于不是使用primary key或unique index,而是使用普通索引
ref_or_null: 与ref类型,区别在于条件中包含对null的查询
index_merge: 索引合并优化
unique_subquery: in的后面是一个查询主键字段的子查询
index_subquery: 与unique_subquery类似,区别在于in的后面是查询非唯一索引字段的子查询  www.2cto.com  
range: 单表中的范围查询
index: 对于前面的每一行,都通过查询索引来得到数据
all: 对于前面的每一行,都通过扫描全表来得到数据

那么在什么情况下我们需要加索引呢?

3. 深入优化
比较偏门,易漏的优化方式
将from_

(未完)

MySQL百万级数据查询优化是提高数据库性能的重要步骤。下面是一些建议: 1. 索引优化:通过合理的索引设计,能够加快查询速度。对于经常作为查询条件的列,添加索引能够提高查询效率。 2. 分页查询优化:对于大数据量查询结果,可以使用分页查询来避免一次性加载所有数据。通过设置合理的分页大小,可以加快查询速度。 3. 使用合适的存储引擎:MySQL支持多种存储引擎,如InnoDB、MyISAM等。根据实际应用需求选择合适的存储引擎可以提高查询性能。 4. 查询语句优化:通过合理的查询语句设计,能够减少不必要的数据查询和计算,加快查询速度。例如,避免使用SELECT *查询所有列,只查询需要的列。 5. 分区表:对于大数据量的表,可以考虑使用分区表来提高查询性能。通过将表按照某个列进行分区,可以将数据分散存储在多个物理文件中,提高查询效率。 6. 调整内存和缓存配置:根据实际硬件情况和数据库负载,合理配置MySQL的内存和缓存参数,如缓存大小、连接池大小等,以提高数据库性能。 7. 查询计划优化:通过对查询执行计划进行分析,可以找出查询中存在的性能瓶颈,并对其进行优化。例如,添加合适的索引、调整查询语句等。 8. 数据库分片:对于超大规模的数据量,可以考虑将数据库分片存储在多个服务器上,通过分片查询来提高查询性能。 总之,针对百万级数据查询优化,需要综合考虑索引设计、分页查询、存储引擎选择、查询语句优化、分区表、内存和缓存配置、查询计划优化以及数据库分片等多个方面。不同的应用场景可能有不同的优化策略,需要结合实际情况进行调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值