mysql数据库优化的个人见解
1.数据库服务器的内核优化。
2.my.cnf配置,搭配压力测试进行调试。
3.sql语句调优
1). 使用缓存优化查询(进行多次相同的查询,结果就会放入缓存中,后续再进行同样的查询,就直接从缓存中提取,不会到表中提取)
select name from table tb where date_user >= CURDATE()(返回当前时间);(因为的不是因定的值,所以缓存会失效。NOW()也一样)
select name from table tb where date_user >= '2020-10-10';
2). explain检测SQL查询
用法:(explain select)

3). 给搜索字段建立索引 where 后面的字段建立索引(大数据的清况下,查询的数据大于当前查询表的一半时,不易使用索引。原因:MySQL内部优化器在进行优化(先走非集聚索引在走集聚索引)(集聚索引和非集聚索引的查询原理))
4). limit 1(明确只有一行数据的时候)
5). 永久连接。(在一些极端的环境中,Apache会发出http请求,创建子进程去请求数据库)
6).选择正确的数据库引擎(myISAM适合大数据量的查询,对插入操作并不友好(在插入时进行表锁,这时查询是无效的,只有完成插入操作才能查询)。innoDB插入操作比较友好,对查询操作并不友好(支持SID、索引、行锁))
7).在进行大量delete、inscrt拆分,会进行锁表(可能会出现待机的问题,使用limit来分批操作。)
8).数据类型,尽量使用小的。(节省存储空间和查询速度)
9).固定字段长度。(trim去一下空格)(减少计划偏移量)
10).尽量不要给null,可以给' '。
11).明确的固定的字段上使用cnum(性别、国家、市),不要使用varchar。
12).id主键每张表都要建立,对集群、分区
13).避免使用select * (查询越多,速度就越慢,数据越多对网络的传输也会负载过重)。
14).减少一些函数的使用如:rand() 计算是在cpu上面进行的,oder by rand
15).连接两表的时候,join时尽量保持两个字段的类型要一致。
16).垂直分割,将表按列的形式分割成表。(经常使用的优化手段)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?