今日无事,想起以前面试的时候问起数据量大的相关问题,就想着模拟一下数据,做做测试和优化
使用以下存储过程 批量插入数据,很快就能造个千万级数据表
CREATE DEFINER=`root`@`localhost` PROCEDURE `test2`()
begin
declare v_cnt decimal (10) default 0 ;
dd:loop
commit;
set v_cnt = v_cnt+10 ;
if v_cnt = 10000000 then leave dd;
end if;
end loop dd ;
end
一千多万条数据查询全部数量用时两秒多点,百万的时候查是1秒左右,做了几个数据统计,感觉统计不多,没办法作为参考。
下面进入无索引的条件查询某个值, 基本都要20秒多点
加了一个索引瞬间变成0.01秒多点,尝试用like %还是这个时间,看来索引真的很有效
下面又是另一个问题,索引加多了会怎么样
方便测试加了10个字段的索引,明显的发现索引添加过多占用了500M 一个的时候才100多M
查询速度呢?
并没有变慢
再加几个
提示太多了不能超过16个,网上看了下说组合索引不能超过16个,正常一个一个的可以64个
一个16字段的聚合索引数据库大了一半,再试下加10个单个索引看下超过了索引的长度超过了数据的长度,说不影响查询速度,谁信呢