存储引擎:
Archive:用于数据存档归档;(mongodb可以代替)
压缩率高;插入快,查询慢;
Memory引擎:内存(redis代替)
myisam:
不支持外键事物;只支持表锁;节省资源,消耗少,适合简单业务;
innodb:
支持事物;支持外键;支持行锁;并发写,事物,更大资源;
索引
优点
提高查询效率
缺点
降低更新表的速度
分类
按功能:普通索引,唯一索引,主键索引,全文索引
按物理实现方式:聚簇和非聚簇
按照作用字段个数:单列索引和联合索引
sql8.0支持降序索引
隐藏索引,相当于伪删除,等确认无误之后再彻底删除这个索引
适合创建索引的情况
- 唯一值的,适合创建唯一索引;
- 频繁被where作为条件的;
- 正常group by 或者order by的适合创建单列索引或者组合索引;
- 散列度高的适合创建索引
- 使用频率最高的放在联合索引的最左边
不适合创建索引的情况
- where等条件使用不到的
- 数据量小
- 散列度低的
- 不建议用无序的值建立索引(uuid)
生成随机数
DELIMITER $
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT
'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
DECLARE return_str VARCHAR(255) DEFAULT '';
DECLARE i int default 0;
WHILE i<n DO
SET return_str=CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));
SET i=i+1;
END WHILE;
RETURN return_str;
END $
DELIMITER;
set global log_bin_trust_function_creators=1;
select rand_string(10);
delimiter $
create function rand_num(from_num int,to_num int) returns int(11)
BEGIN
declare i int default 0;
set i=floor(from_num+rand()*(to_num-from_num+1));
return i;
end $
delimiter;
select rand_num(10,100);
#插入大量数据
delimiter $
create procedure insert_stu1(start int,max_num int)
BEGIN
declare i int default 0;
set autocommit =0;
REPEAT
set i=i+1;
insert into student(stuno,name,age,classid)VALUES((start+i),rand_string(6),rand_num(10,100),rand_num(10,1000));
until i=max_num
end repeat;
commit;
end $
delimiter;
call insert_stu1(100001,4000000);
image.png
image.png
image.png
image.png
image.png
image.png
网友评论