千家信息网

SQL语句优化

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一、SQL语句优化(1)查看表结构MariaDB [oldboy]> desc test1;+-------+----------+------+-----+---------+-------+| F
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 互联网科技公司经营范围 山东特亿宝互联网科技有限公司 云信互联网科技有限公司 科技金融是不是互联网金融 狮子座互联网科技有限公司 北京三清互联网科技 汽车互联网创新科技园 知域互联网科技有限公司大骗子 杭州壁岐互联网科技有限公司 哈尔滨屹滨互联网科技有限公司 消费医药和互联网科技 允成互联网科技有限公司融资 互联网新科技动漫ppt素材 阿里互联网科技企业 广州富喜互联网络科技 皮皮虾互联网科技有限公司 半导体是互联网高科技吗 风投北京互联网科技 半导体行业属于互联网高科技类吗 武汉亿视互联网科技有限公司 互联网巨头反垄断金融科技 北京互联网科技有限公司 互联网女皇 腾讯科技 国大互联网教育科技有限公司工作 佛山市拉法互联网科技有限公司 互联网数据科技专业 互联网科技圈年度人物 元气玛特互联网科技公司是外包吗 互联网科技平台产品运营 平安好医生打造互联网科技医疗
0