1.插入或替换记录,若是存在则先删除再插入,不存在则直接插入sql
replace into 表名 values数据库
实例:replace into emp(id,ename,age,job,add_time) values('5','you',34,'waiter',now());//insert语句替换为replace,其它不变优化
2.插入或更新记录,插入一条记录,若是该记录存在则更新索引
INSERT INTO ... ON DUPLICATE KEY UPDATE ...it
实例:insert into emp(id,ename,age,job,add_time) values(6,'sfd',12,'model',now()) on duplicate key update ename='jj',age=255;table
3.插入或忽略,若是咱们插入一条记录,若是记录已存在就啥也不干忽略。date
insert ignore into 表名 valuesselect
实例:insert ignore into emp(id,ename,age,job,add_time) values(7,'fff',12,'model',now()) ;sql语句
4.快照model
create table tablename select * from tablename
实例:create table emp_tmp select * from emp where id='5';
新表跟旧表 表结构一致,数据根据查询条件来。
5.插入查询结果集
insert into select
实例:insert into emp_tmp(ename,age) select ename,age from emp where ename='you';
6.强制使用索引
数据库查询优化器一般会分析sql语句采用最合适的索引,但这不是绝对的,不必定总能使用最优索引,若是咱们很清楚最优索引,那么能够强制使用
select * from 表名 force index(索引名) where
实例:select * from emp force index(index_age) where age=12 order by age desc;