SQL语句优化
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,一、SQL语句优化(1)查看表结构MariaDB [oldboy]> desc test1;+-------+----------+------+-----+---------+-------+| F
千家信息网最后更新 2025年11月07日SQL语句优化
一、SQL语句优化
(1)查看表结构MariaDB [oldboy]> desc test1;+-------+----------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| id | int(4) | NO | | NULL | || name | char(16) | NO | | NULL | || age | int(2) | YES | | NULL | |+-------+----------+------+-----+---------+-------+(2)explain 查看是否含有建立索引的语句MariaDB [oldboy]> explain select * from test1 where name="kaka"\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: test1 type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 5 #查询行数,表示当前查询了5行 Extra: Using where1 row in set (0.00 sec)(3)创建索引MariaDB [oldboy]> create index index_name on test1(name);Query OK, 0 rows affected (0.05 sec)Records: 0 Duplicates: 0 Warnings: 0(4)重新查询MariaDB [oldboy]> explain select * from test1 where name="kaka"\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: test1 type: refpossible_keys: index_name key: index_name key_len: 48 ref: const rows: 1 #查询行数,表示当前只查询了1行 Extra: Using index condition1 row in set (0.00 sec)#从以上例子可以看到,使用索引,可以更快的查询所需要的信息。二、使用explain命令优化SQL语句(select语句)的基本流程
1、抓慢查询SQL语法方法
每隔2,秒输入:SHOW FULL PROCESSLIST; 如果出现2次说明存在慢查询MariaDB [oldboy]> show full processlist;+----+------+-----------+--------+---------+------+-------+-----------------------+----------+| Id | User | Host | db | Command | Time | State | Info | Progress |+----+------+-----------+--------+---------+------+-------+-----------------------+----------+| 9 | root | localhost | oldboy | Query | 0 | NULL | show full processlist | 0.000 |+----+------+-----------+--------+---------+------+-------+-----------------------+----------+1 row in set (0.00 sec)2、分析慢查询日志
配置参数记录慢查询语句log_query_time = 2 #执行超过2s记录到log中log_queries_not_using_indexes #没有走索引的语句,记录log中log-slow-queries = /data/3306/slow.log #log的位置explain select * from test from where name='oldboy'\G #查看是否走索引explain select SQL_NO_CACHE * from test where name='oldboy'\G #去除缓存3、对需要建索引的条件列建立索引
生产场景,大表不能高峰期建立索引,例如:300万记录
4、分析慢查询SQL的工具mysqlsla(每天早晨发邮件)
切割慢查询日志,去重分析后发给大家1)mv,reload进程 2)cp,>清空2)定时任务mv /data/3306/slow.log /opt/$(date +%F)_slow.logmysqladmin -uroot -p123456 flush-logs mysqlsla分析:http://blog.itpub.net/7607759/viewspace-692828/优化起因:1)网站出了问题,访问很慢。 a.web服务器的负载、存储、db(负载、io、cpu) 登录db:show full processlist2)慢查询语句(日志文件)long_query_time=2 #执行超过2s记录到log中log_queries_not_using_indexs #没有走索引的语句,记录log中log-slow-queries=/data/3306/slow.log #log的位置切割,分析,发给管理员案例分析:1.查看是否db存在慢查询:show full processlist;2.explain分析:explain 慢查询的语句3.查看表结构:desc test1;4.定位在哪列建立索引,哪张表5.查看条件字段列的唯一值的数量 select count(distinct ader) from ad_oldboy_detail6.建立索引 create index ....三、使用profile优化SQL语句优化
了解内容,高级DBA使用help show profile;select @@profiling;set profiling = 1;select @@profiling;show profile;show profile for query 2;http://www.cnblogs.com/adforce/archive/2012/06/02/2532287.html
查询
索引
语句
分析
日志
位置
条件
结构
高级
任务
例子
信息
内容
参数
命令
场景
字段
工具
数量
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学校网络安全工作计划2022
山东软件开发人日单价标准
福山区直播软件开发公司
广东龙锦网络技术有限公司
网络安全技术只能拷贝吗
网络安全对未成年人保护工作
服务器电源排名
软件怎么修改数据库
开展网络安全演练的通知
怀旧服部落服务器怎么扩容
数据库中标题的作用
数据库文档模型的优缺点
小米和红米游戏服务器有区别吗
华为云服务器为什么是英文的
小程序从服务器取数据
网络安全及实施条例
网络安全信息的股票有什么
攻击ftp服务器
杭州云象网络技术的财务报告
网络安全法的主要职责是什么
山东软件开发人日单价标准
科技互联网商标属于多少类
企业网站建立服务器
重庆财务软件开发工程师
怀旧服开服服务器时间表
陕煤网络安全知识答题答案
山东商业软件开发定制价格
浙江高精度农业信息系统数据库
网络安全竞赛小品的短的梗概
计算机网络技术专业单招面试