mysql -hxx -Pxx -uxx -pxx
CREATE TABLE `user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(10) DEFAULT '0',
`pos` varchar(30) DEFAULT NULL,
`phone` varchar(11) DEFAULT NULL,
`created_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_name_age_pos_phone` (`name`,`age`,`pos`,`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
select * from student left join score on student.id=score.s_id order by score_val desc limit 15
select DISTINCT course_name from student_table where grade=1;
select * ,count(b) as sum from table where a='' group by s having sum>10 order by c desc limit
select s.id, c.name from student s left join course c on s.id=c.student_id
insert into table (a,b) values (1,2)
delete from table where id>10
update table set a=1 where id=1
alter table app_apply add log_index varchar(255) default Null //变更、增加字段
alter table 表名 add column 列名 varchar(20) not null first;
alter table 表名 add column 列名 varchar(20) not null after user1;
alter table app_apply drop column def ;
alter table app_apply change def unit char;
–COUNT:统计行数量
–SUM:获取单个列的合计值
–AVG:计算某个列的平均值
–MAX:计算列的最大值
–MIN:计算列的最小值
SELECT student_class,AVG(student_age) AS 平均年龄 FROM t_student GROUP BY (student_class) HAVING AVG(student_age)>20;
//添加主键索引
ALTER TABLE `table_name` ADD PRIMARY KEY (`column`)
//添加唯一索引
ALTER TABLE `table_name` ADD UNIQUE (`column`)
//添加全文索引
ALTER TABLE `table_name` ADD FULLTEXT (`column`)
//添加普通索引
ALTER TABLE `table_name` ADD INDEX index_name (`column` )
//添加组合索引
ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`)
##2. 慢查询
status;
show tables;
select * from information_schema.tables where table_name ='table_name'
show variables like 'port';
show status like 'Threads%'; //查看数据库当前连接数,并发数
show variables like '%max_connections%'; //查看最大连接数
set global max_commections = 1000; //修改最大连接数
show grants for 'root'@'localhost'; // 查看某个具体用户的权限
explain select * from user where age = 20 and phone = '18730658760' and pos = 'cxy';
显示结果分析:
table | type | possible_keys | key |key_len | ref | rows | Extra
EXPLAIN列的解释:
table 显示这一行的数据是关于哪张表的
type 这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
rows 显示需要扫描行数
key 使用的索引
查看mysql正在运行的sql线程,可看到sql语句执行时间
show processlist
show full processlist
mysqladmin processlist
select * from information_schema.processlist //查看当前所有的process
select * from information_schema.processlist where info is not null order by time desc //查看当前正在进行的查询并按照已经执行时间倒排
日志分析工具mysqldumpslow
得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
慢查询的数量保存在mysql库里面的slow_log表。
SELECT * FROM slow_log where start_time > '2019/05/19 00:00:00';
数据巨大
深度分页 Limit导致全表扫描
数据分布不均
一次请求执行30条Sql 传输时间增加
网络带宽 网卡打满
丢包重试
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。