常用语句

--查看表中所有字段信息
show full columns from user;
--修改表名
alter table 旧表名 rename 新表名;
--修改字段
alter table 表名 change 旧属性名 新属性名 新数据类型;
--增加字段
alter table 表名 add 属性名1 数据类型 [完整性约束条件][first|after 属性名2];
--删除字段
alter table 表名 drop 属性名;
--创建索引
create [unique|fulltext|spatial] index 索引名 on 表名(属性名 [(长度)][asc|desc]);
alter table 表名 add  [unique|fulltext|spatial] index 表名(属性名 [(长度)][asc|desc]);
--删除索引
drop index 索引名 on 表名;

--查询表名
SELECT CONCAT("drop table ",TABLE_NAME,";") from information_schema.`TABLES` where TABLE_NAME like 'prp_platform%';

列复制:
update test set name = name1;

正则匹配:
select * from table_name where column_name regexp '';

备份:
命令行执行:
mysqldump -u root -proot temp dept > d: emp.dept.bak

恢复:
mysql命令行执行:
source d: emp.dept.bak

字符集:
show character set;
字符集校对规则:
show collation;

字符集校对规则(例):
utf-generl-ci:不区分大小写校验,即查询和排序的时候会体现
utf-bin:区分大小写

优化方式:

1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)
2、涉及联表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合
3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度
4、针对数量大的表进行历史表分离(如交易流水表)
5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步
explain分析sql语句,查看执行计划,分析索引是否用上,分析扫描行数等等
查看mysql执行日志,看看是否有其他方面的问题

1.表的设计合理化(符合3范式)
2.添加适当索引(普通索引、主键索引、唯一索引、全文索引)
3.分表技术(水平、垂直分割)
4.读写分离
5.存储过程(模块化编程,可以提高速度)
6.对mysql配置优化(配置最大并发数,调整缓存大小)
7.mysql服务器硬件升级
8.定时清除不需要的数据,定时进行碎片整理(myisam)

sql慢查询:
show status like 'slow_queries';
--慢查询时间,默认10秒
show variables like 'long_query_time';
--设置慢查询时间,重新进入会话后会重置
set long_query_time=1
--mysql开启慢查询日志
binmysqld.exe --safe-mode --slow-query-log

原文地址:https://www.cnblogs.com/cyf18/p/14285957.html