(1.10)常用SQL优化 insert优化.order by 优化 1.insert 优化 2.order by 优化 [2.1]mysql排序方式: (1)索引扫描排序:通过有序索引扫描直接返回有序数据 (2)filesort排序:所有不是索引扫描返回结果的数据均为filesort排序 filesort优化: 3.优化group by 4.子查询优化 在!= 操作的子查询中,可以用left join + is null 来优化 5.or优化 or 在同字段下可以改成 in 在不同字段下可以使…
作者:阿里云云栖社区链接:https://zhuanlan.zhihu.com/p/26043916来源:知乎著作权归作者所有,转载请联系作者获得授权. 前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况.阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题.现将<ApsaraDB专家诊断报告>中出…
1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样条件排序都能有效的利用到索引,性能迅速提升. SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' ORDER BY create_time LIMIT 1000, 10; 好吧,可能90%以上的DBA解决该问题就到…
1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如: , ; 一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样条件排序都能有效的利用到索引,性能迅速提升. 当 LIMIT 子句变成 “LIMIT 1000000,10” 时,还是慢为啥?因为数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算一次. 在前端数据浏览翻页,或者大数据分批导出等场景下,是可以将上一页的最大值当成参数作为查询条件的…
(1.9)SQL优化——mysql导入导出优化 1.大批量插入数据 [1.1]MyISAM: (1)如果存在表且有数据,插入前先关闭所有非唯一索引. (2)如果表是空的,默认就是先导入数据再创建索引,所以不用管. [1.2]InnoDB (1)因为InnoDB是按照主键顺序存储的,所以导入的数据集事先按主键字段顺序有序排列好 (2)关闭唯一校验,关闭check校验 (3)关闭自动提交,导入文件数据后再开启自动提交.…
原文:sql点滴41-mysql常见sql语法 ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 添加带注释的列:alter table directory add index_url varchar(256) default null comment '章节书目链接' after di…
1.explain分析explian引用索引基数show indexes from table_name;主键索引具有最好的基数 测试时 不走缓存SELECT SQL_NO_CACHE id from test_null; 2.更好的索引类型 索引列尽可能的为not null ,避免在可空的列索引上进行二次扫描 要尽量避免 NULL ,关于索引列为Null的是否走索引,见测试 索引列的值为null查询时走索引的情况3.使用unique index 与常规索引比不需要进行索引范围扫描4.使用pri…
https://yq.aliyun.com/articles/72501?utm_content=m_14899…
1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.优化器将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行. 3.应尽量避免在…
标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 表字段类型 TINYINT 微小整数类型,可存储的容量为1字节 INT 整数类型,可以存储容量为4个字节(4294967296) CHAR(M) 定长字符串类型,当存储时,总是用空格填满右边到指定的长度,最大可存储1<= M字节<= 255 VARCHAR(M) 变长字符串类型,最大可存储1<= M字节<= 255 1.登陆MySQL数据库. mysql -uro…