SQL语句优化
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,一、SQL语句优化(1)查看表结构MariaDB [oldboy]> desc test1;+-------+----------+------+-----+---------+-------+| F
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
软件开发流程视频
网络安全事故可以作为免责条款吗
教育学外文数据库
财务软件开发的区别
数据库研发力量
浚峰网络技术有限公司怎么样
西藏诚信积分管理软件开发软件
教材计算机网络技术
国家网络安全防护中心
昆明网络技术有限公司电话
网易游戏的服务器网管叫什么
山西网络安全周
网络安全与保密有效应对
30万行数据库慢
车载网络技术的成本
密云区正规软件开发技术指导
小学校园网络安全ppt
微信软件开发
账号注销数据库还有数据吗
数据库连接html文件
nginx数据库反代理
web服务器搭建视频
软件开发的成本如何预测
河北工业大学IGI数据库
个人记账软件开发
上海星乾网络安全信息公司
数据库组件委托表
学情达登录提示服务器未连接
网络技术与应用网络诊断命令
安全托管大数据库