MySQL命令
# 常用语句
1、如果有主键或者唯一键冲突则不插入:insert ignore into
2、如果有主键或者唯一键冲突则更新,注意这个会影响自增的增量:INSERT INTO room_remarks(room_id,room_remarks) VALUE(1,"sdf") ON DUPLICATE KEY UPDATE room_remarks="234"
3、如果有就用新的替代,values如果不包含自增列,自增列的值会变化:REPLACE INTO room_remarks(room_id,room_remarks) VALUE(1,"sdf")
4、备份表:CREATE TABLE user_info SELECT * FROM user_info
5、复制表结构:CREATE TABLE user_v2 LIKE user
6、从查询语句中导入:INSERT INTO user_v2 SELECT * FROM user或者INSERT INTO user_v2(id,num) SELECT id,num FROM user
7、连表更新:UPDATE user a, room b SET a.num=a.num+1 WHERE a.room_id=b.id
8、连表删除:DELETE user FROM user,black WHERE user.id=black.id
# 锁相关(很少用)
1、共享锁: select id from tb_test where id = 1 lock in share mode;
2、排它锁: select id from tb_test where id = 1 for update
# 优化时用到:
1、强制使用某个索引: select * from table force index(idx_user) limit 2;
**2、禁止使用某个索引:**select * from table ignore index(idx_user) limit 2;
3、禁用缓存(在测试时去除缓存的影响): select SQL_NO_CACHE from table limit 2;
# 查看状态
1、查看字符集 SHOW VARIABLES LIKE 'character_set%';
2、查看排序规则 SHOW VARIABLES LIKE 'collation%';
# 慢查询日志
查询慢查询日志信息可以直接通过执行sql命令查看相关变量,常用的sql如下:
-- 查看慢查询配置
-- slow_query_log 慢查询日志是否开启
-- slow_query_log_file 的值是记录的慢查询日志到文件中
-- long_query_time 指定了慢查询的阈值
-- log_queries_not_using_indexes 是否记录所有没有利用索引的查询
SHOW VARIABLES LIKE '%quer%';
-- 查看慢查询是日志还是表的形式
SHOW VARIABLES LIKE 'log_output'
-- 查看慢查询的数量
2
3
4
5
6
7
8
9
10
11
mysqldumpslow的工具十分简单,我主要用到的是参数如下:
例子:mysqldumpslow -v -s t -t 10 mysql_slow.log.2018-11-20-0500
-t:限制输出的行数,我一般取前十条就够了 -s:根据什么来排序默认是平均查询时间at,我还经常用到c查询次数,因为查询次数很频繁但是时间不高也是有必要优化的,还有t查询时间,查看那个语句特别卡。 -v:输出详细信息
# 查看sql进程和杀死进程
--查看进程列表
SHOW PROCESSLIST;
--杀死某个进程
kill 183665
2
3
4