十六、mysql 分区之 简单sql优化1

1.使用 show session status like ‘%Com_%‘; 可以查看当前连接的各个sql的执行频率
       show global status like ‘%Com_%‘; 可以查看从上次mysql服务器启动到目前为止sql的执行频率

2.explain select * from tmp;
    mysql> explain select * from zi_emp where tid = 1000\G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: zi_emp
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 2
            Extra: Using where
    1 row in set (0.00 sec)

    PS::type类型中,ALL为效率最差,因为这样意味着进行全表扫描
        index类型为索引全扫描
        range为索引范围扫描
        ref为非唯一索引或唯一索引的前缀扫描
        eq_ref唯一索引扫描
        const/system 单表中只有一个匹配的行,比如用户表
        NULL  没有访问到表或索引 比如:select 1=1;

3.哈哈,发现一个很好的东西
    explain extended select * from zi_emp; 查看执行sql语句前,mysql优化器做了点什么
    show warnings;
    mysql> show warnings\G
    *************************** 1. row ***************************
      Level: Note
       Code: 1003
    Message: select `bin`.`zi_emp`.`tid` AS `tid`,`bin`.`zi_emp`.`tname` AS `tname` from `bin`.`zi_emp`
    1 row in set (0.00 sec)

    PS::没错,你看的就是一条完整的sql语句,也就是说这可能是msyql给定的最好的sql语句了,可以学习并复用

4.explain partitions select * from zi_emp where xxxxx 可以查看当前记录的分区所在位置

十六、mysql 分区之 简单sql优化1

时间: 2024-08-04 09:19:04

十六、mysql 分区之 简单sql优化1的相关文章

十六、mysql 分区之 简单sql优化2

1.索引的分类 B-Tree 基本支持 HASH 只有memory支持 R-Tree myisam支持 Full-text myisam支持(全文索引) 2.Memory引擎下只有“=”条件才会使用索引 =============================== 导入数据的优化 ======================== 3.如何提高myisam的导入效率 alter table emp disable keys;关闭索引 load data infile 'aa.sql' into

MySQL索引原理及SQL优化

原文:MySQL索引原理及SQL优化 目录 索引(Index) 索引的原理 b+树 MySQL如何使用索引 如何优化 索引虽好,不可滥用 如何验证索引使用情况? SQL优化 explain查询执行计划 id select_type table type possible_keys key key_len ref rows Extra 优化数据库结构 优化数据大小 优化数据类型 索引(Index) MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.索引的建立对

马哥学习笔记二十六——MySQL主从复制

配置MySQL复制基本步骤: 一.master 1.启用二进制日志 log-bin = master-bin log-bin-index = master-bin.index 2.选择一个惟一server-id server-id = {0-2^32} 3.创建具有复制权限的用户 REPLICATION SLAVE REPLICATION CLIENT 二.slave 1.启用中继日志 relay-log = relay-log relay-log-index = 2.选择一个惟一的server

Mysql的一条SQL优化(一)

开发反应做压测时并发上不去,有条SQL执行非常慢,于是explain下: MariaDB [db_vip]> MariaDB [db_vip]> explain select            ext_id, mid, msource_id, msource_type, referee, mobile, tel, mpassword,status         from m_db_vip     where  (msource_id='xx1391434680574433' and ms

【MySQL】10条SQL优化语句,让你的MySQL数据库跑得更快!

慢SQL消耗了70%~90%的数据库CPU资源: SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低: SQL语句可以有不同的写法: 1 不使用子查询 例:SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name='hechunyang'); 子查询在MySQL5.5版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表t2,当外表的数据很大时,查询速度会非常慢.在Mari

Mysql的一条SQL优化(二)

开发过来查看我做的调整,发现我创建的索引其实在另一个测试库上(测试库2)已经创建好了,但为什么测试库2上还是慢呢? 于是上测试库2查看,发现之前我创建的2个列的索引确实已经有了,并且还多了一个索引i_msource_type: Indexes Columns Index_Type PRIMARY ext_id Unique i_mobile mobile i_msource_type msource_type i_msource_id msource_id 而msource_type列的可选择性

马哥学习笔记十六——MySQL进阶之事务和隔离级别

连接管理器:  接受请求  创建线程  认证用户  建立安全连接 并发控制: mbox:MDA C/S: 100   10分钟: 多版本并发控制: MVCC 锁: 读锁:共享锁 写锁:独占锁 LOCK TABLES tb_name {READ|WRITE}; UNLOCK TABLES 锁粒度:从大到小,MySQL服务器仅支持表级锁,行锁需要由存储引擎完成: 表锁: 页锁:(block) 行锁: 事务:  RDBMS: ACID (原子性,一致性,隔离性,持久性) MyISAM:  不支持事务

聊聊高并发(十六)实现一个简单的可重入锁

可重入锁指的是如果一个线程已经获得了一个锁,那么它可以多次进入这个锁,当然前提是线程需要先获得这个锁. 可重入锁是最常使用的锁,Java的内置锁就是可重入锁,使用synchronized关键字可以启用内置锁机制,比如说一个类有两个synchronized方法A和B,在A方法中调用了B方法,如果锁不是可重入的,那么访问B时需要再次竞争锁,这样会带来死锁. public synchronized void A(){ B(); } public synchronized void B(){ } 可重入

十六.MySQL存储过程

1.创建一个没有参数的存储过程 CREATE PROCEDURE sp1() SELECT VERSION(); 调用存储过程:CALL sp1(); 2.带有IN参数的存储过程 CREATE PROCEDURE removeUserByID(IN p_id INT UNSIGNED) BEGIN DELETE FROM users3 WHERE id=p_id; END // 3.创建带有IN和OUT类型的存储过程 原文地址:https://www.cnblogs.com/chenshaopi