MySql高级部分<二>

索引的使用

对多个列建立了索引,必须从左往右,像爬楼梯一样,中间不能断
MySql高级部分<二>_第1张图片

MySql高级部分<二>_第2张图片
不要用substring等运算操作
MySql高级部分<二>_第3张图片
如果是字符串类型,必须加单引号,不然索引失效
MySql高级部分<二>_第4张图片
少使用select * 这种语句,多使用 select 已经被索引的字段名


select 后面既有被索引的字段名,也有没有被索引的字段名 。 这样会降低效率,会出现using index condition ,就是查找使用了索引,但是需要回表去查询所需的数据
MySql高级部分<二>_第5张图片MySql高级部分<二>_第6张图片
要避免回表查询,回表查询效率很低

索引的字段相当于 0 ,没有被索引的字段相当于 1,用or连接时,0 or 1还是 1 ,所以还是没有被索引,那个被索引的字段也就失效了,不会被用到
MySql高级部分<二>_第7张图片MySql高级部分<二>_第8张图片
%加在前面,索引失效,这时候解决方案就是用覆盖索引的方法,将 select * 修改为 select 带有索引的字段 from 表名

MySql高级部分<二>_第9张图片MySql高级部分<二>_第10张图片MySql高级部分<二>_第11张图片

sql优化

MySql高级部分<二>_第12张图片MySql高级部分<二>_第13张图片MySql高级部分<二>_第14张图片MySql高级部分<二>_第15张图片MySql高级部分<二>_第16张图片
在事务中进行数据插入,如果需要插入的数据量比较大,可以分批的进行插入,比如要插入10万条数据,那么可以每一万条数据开启事务,然后提交,接下来一万条数据,又开启事务,一万条数据插入完成之后,再提交

MySql高级部分<二>_第17张图片MySql高级部分<二>_第18张图片MySql高级部分<二>_第19张图片MySql高级部分<二>_第20张图片

or 的两边都必须要有索引,不然不会用到索引
MySql高级部分<二>_第21张图片MySql高级部分<二>_第22张图片MySql高级部分<二>_第23张图片MySql高级部分<二>_第24张图片MySql高级部分<二>_第25张图片
MySql高级部分<二>_第26张图片MySql高级部分<二>_第27张图片MySql高级部分<二>_第28张图片MySql高级部分<二>_第29张图片

你可能感兴趣的:(mysql,数据库,sql,java)