发表于: 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 学习相关操作概念


困…


返回列表 返回列表
评论

    分享到