mysql使用小结

mysql使用小结

1.设置编码

set names 'utf8';

2.查询

主键查询贼快

select * from xxxxx where id between {} and {}

limit缓慢原因

limit10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行
1.从数据表中读取第N条数据添加到数据集中
2.重复第一步直到 N = 10000 + 20
3.根据 offset 抛弃前面 10000 条数
4.返回剩余的 20 条数据

数据库的数据存储是随机的,使用B+Tree,Hash等方式组织索引

如果筛选列只是主键效率不是很慢

查询所有DB大小

select 
table_schema as '数据库',
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) desc, sum(index_length) desc;

查询指定DB表大小

select 
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='wholeprocess'
order by data_length desc, index_length desc;

3.存储过程

查看所有存储过程

show procedure status;

查询存储创建语句

show create procedure insetrows;

# 30亿的数据需要两三天导入
CREATE DEFINER=`boss_step`@`%` PROCEDURE `insetrows`()
BEGIN
DECLARE rn int(11) default 3000000000;

WHILE (rn >=0) DO

INSERT into ipv6guid_partition(sguid, etl_stamp, indate) select *, substr(etl_stamp,19,8) as indate from ipv6guid limit 5000;
DELETE from ipv6guid limit 5000;
SET rn=rn-5000;
commit;

END WHILE;

END 

本文作者:朝圣

本文链接:www.zh-noone.cn/2020/11/mysql使用小结

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

浏览器跨域解决方案
0 条评论