--oracle 是从 1 开始--mysql 初始偏移量是 0,即是从 0 开始不是从 1 开始--6-15limit5,10limit10offset5--事务启动starttransaction--more sqlcommit;--自动提交,1 or ON 启用,0 or OFF 禁用show variables like'AUTOCOMMIT';--修改隔离级别setsessiontransactionisolationlevelread commited;--显示锁定select...lockinsharemode;select...forupdate;--显示表信息showtablestatuslike't_user';--检查表错误和修复CHECKTABLE mytable;
REPAIR TABLE mytable;--转换表存储引擎ALTERTABLE mytable ENGINE=InnoDB;--转换表存储引擎createtable innodb_table like myisam_table;altertable innodb_table engine=InnoDb;insertinto innodb_table select*from myisam_table;--慢查询日志开始show variables like'long_query_time';show variables like'slow_query%';--82-78页SHOWFULL PROCESSLIST;--剖析单条查询:show profileset profiling=1;select...from mytable;show profile;show profile for query 1;--比较粗select state,sum(duration)as total_r,round(100*sum(duration)/(selectsum(duration)from information_schema.profiling
where query_id=1),2)as pct_r,count(*)as calls,sum(duration)/count(*)as'r/call'from information_schema.profiling
where query_id=1groupby state
orderby total_r desc;--比较细--剖析单条查询:show status(大部分结果都只是一个计数器)--(本身也会创建一个临时表,临时表计数最少多 2)showstatus;showglobalstatus;--下面是一组
flush status;select*from a;showstatuswhere variable_name like'Handler%'or variable_name like'Created%';--EXPLAIN(估计得到多结果,无法告知临时表是否是磁盘表)--performance_schema(有限制)select event_name,count_star,sum_timer_wait
from performance_schema.events_waits_summary_global_by_event_name
orderby sum_timer_wait desclimit5;showglobalstatuswhere variable_name in('Queries','Threads_connected','Threads_running','Questions');showinnodbstatus;--慢查询日志结束--主键已存在则更新ONDUPLICATEKEYUPDATE--禁用(非唯一)索引altertable mytable disablekeys;--检查表损坏checktable mytable;--部分引擎支持--修复损坏的表
repair table mytable;--部分引擎支持altertable innodb_tb1 ENGINE=INNODB;--所有引擎支持--更新优化器统计信息analyzetable mytable;--查看基数(cardinality)showindexfrom mytable;--会锁表,innodb 每次执行都会触发统计信息的更新show indexes from mytable;--基于成本的优化器:成本showstatuslike'Last_query_cost';--查看 MySQL 重构的查询语句explainselect id from t_user where id=-1;showwarnings;--取消自动优化表排序(成本不一样)select*from a straight_join b on a.id=b.a_id;union-----(select name from a orderby name desclimit10)unionall(select name from b orderby name desclimit10)orderby name desclimit10;
min max
-------explainselectmin(id)from t_dict where name='sdfsf';explainselect id from t_dict useindex(primary)where name='sdfsf'limit1;
分页(代价可能非常高)
----select sql_calc_found_rows *from people limit0,1;SELECT FOUND_ROWS();--查询缓存
flush query cache;--碎片整理
reset query cache;--清空缓存
高性能 MySql 语句小记--oracle 是从 1 开始--mysql 初始偏移量是 0,即是从 0 开始不是从 1 开始--6-15limit 5,10limit 10 offset 5--事务启动start transaction--more sqlcommit;--自动提交,1 or ON 启用,0 or OFF 禁用show variables like 'AUTOCOMMIT';--修改隔离级别set session transaction isolation