发表于: 2016-12-08 04:33:02
1 1962
今天完成的事情:学习了索引的概念、btree的原理,数据量不大有无索引基本没有区别。
关于mysql的深度思考:
1、为何用long型替代date型?
A:建立索引需要区别度大一些比较好,我猜可能是因为long型区别度比date型大…我用date反正觉得还不错,插入的时候直接用current_time(不知道long型可不可以这么直接用 明天考证一下)
2、自增id的坏处?
A:本来有5条数据,删除了2~4号数据再新添加的时候会继续从6号开始,但我现在感觉也没什么问题,丢失的id我手动插入了,请师兄指点…我猜后面大规模导入数据的时候可能不适用、因为没法一条条填空?
3、什么是db的索引,多大数据量时会有性能差别,什么时候该建索引?
A:没有索引时,查找数据会遍历整个database,有了索引就可以跳过不必要的扫描区域,提高查找效率; 内存的读写速度很快,但是磁盘的读写速度很慢,一次磁盘的io需要大致9ms(寻道时间+旋转延迟)。如果无索引,每次io读一页数据4~8k,一个百万数据库大小2G,估算一下要500000*9ms=4500s=1小时多,但是用btree对百万级数据库进行扫描仅需要3次io,即几十毫秒;我觉得只要稍大的数据库应该都要建索引。
4、唯一索引和普通索引的区别:唯一索引的列值要唯一、但允许空值。什么时候要唯一索引:想不出
收获:已经弃用navicat,刷了一遍mysql基础教程(数据聚合和排序、数据更新、函数谓词case表达式都学了一遍)还有复杂查询、集合运算没看,感觉现在应该算是会一点mysql了,但是查资料发现mysql的查询性能优化是个技术活,并没来及仔细看资料。
明天的任务:回答验证剩下的深度思考问题,装maven7 学习相关操作概念
困…
评论