发表于: 2017-08-18 21:09:55

2 1216



我是老大钦点的外门弟子




一,今天完成的任务

步骤10.插入10条数据,查看有索引和无索引的情况下,sql语句执行的效率

怎么查看自己的索引:查看索引
mysql> show index from tblname;
mysql> show keys from tblname;
遇到的问题:单条语句插入正常,多条数据插入报错
错误原因:加数据时没有把values删掉
解决办法:删掉它。
有索引时插入十条数据
删除索引后
可以看到删除索引后,添加数据的速度变快了(不过添加索引花费的时间有点超乎我的想象,居然比插入多这么多)
———————————————————————————分割线——————————————————————————————-
11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。
5.为什么DB的设计中要使用Long来替换掉Date类型?
我对问题的理解是本来可以用date的地方用long来代替,我认为这样的好处是格式不固定,day,month,year的顺序和格式可以很随意,不会轻易出现报错。
date类型的好处是,可以直观的察看到日期数据,使用Long型的好处是,方便网络数据的传输
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
自增ID适用于顺序插入,不适用于频繁增删的数据。对于频繁出入的数据自增ID也要做频繁的修改,增大了数据工作量,延长了时间。
自增ID不存在连续,如果在插入数据后 ,删除一条数据 那么这条数据所使用的id也会被删除,不能再重复使用
 使用自增ID 数据重复了不会提示和处理 比如再NAVICAT中插入人名,出现多个张三,这是不会出现任何提示
 在面对对象时不能保证完整性,在使用某个对象调用数据,发现数据不完整,这时候无法控制这个ID
 分库的是后ID不唯一  第二个数据库ID又会从0开始自增  ID将不唯一
 在有其他能唯一标识的数据列存在的时候,就不需要使用过自增ID
 在需要做分库的时候,同步自增id会出现很多问题,这种情况不该使用自增ID
弃用数据库自增ID,曝光一下我自己用到的解决方法 - weizhiai12的专栏 - CSDN博客
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQLServer 可以快速有效地查找与键值关联的行。(摘自网络)
当数据量过少,不建立索引提取列数据所用时间也极短,一般在数据量达到10W的情况下对字段建立索引
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
普通索引可以对应多个不同的顺序,唯一索引只有唯一的数据满足条件。在精细查找和需要数据保持唯一性的时候建立索引。
唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,当有数据为null的时候就需要用唯一索引
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要,插入时即报错,插入失败。唯一索引不允许对应两个数据
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
CreateAt应该在第一次新建记录的时候赋值,UpdateAt应该在该条记录更新时赋值;不开放,外部调用操作不应该对记录进行修改。
11.修真类型应该是直接存储Varchar,还是应该存储int?
varchar,因为他是字符型数据
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
在输入时确定,比如varchar(40),不写就是默认长度。
Varchar最长支持长度为255字节的数据,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 原则是要够用但不能过多占用系统空间, vachar(字符型)textlongtext(文本型)的区别在于文本型最多可以储存20亿长度的数据,而varchar最长只支持255VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要,一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。
13.怎么进行分页数据的查询,如何判断是否有下一页?
使用LIMIT字句指定要检索的开始页和页数
判断下一页:使用select COUNT(*) from table获得页的总数,经计算可知下一页有无。
14.为什么不可以用Select * from table?

???可以啊。在需要查询全表且表内容不多时可以使用。其余情况不推荐使用




                                                                            -------------------------------------------分割线-----------------------------------------------------



12.下载Java 7,并配置环境变量,百度搜索一下JDK和JRE的区别,并将结论用自己的话写在日报中。
之前学过JAVA基础教程,电脑上已经装好了,可以直接用eclipse进行编程,但过程忘了。所以这一步暂时略过。
具体的百度就行了,不算难。
JDK安装与环境变量配置_百度经验
关于JRE和JDK的区别,终于知道他们的区别了
Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢?学过MFC的都知道什么是dll文件吧,那么大家看看jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。 

Jdk 是java development kit,是java的开发工具包,里面包含了各种类库和工具。当然也包括了另外一个Jre. 那么为什么要包括另外一个Jre呢?而且jdk/jre/bin同时有client和server两个文件夹下都包含一个jvm.dll。说明是有两个虚拟机的。这一点不知道大家是否注意到了呢? 



     -------------------------------------------分割线-----------------------------------------------------




13.下载Maven3,并配置好环境变量。
Maven安装配置 - Maven教程™

通过修真院的资料顺利配置。


     -------------------------------------------分割线-----------------------------------------------------

二,遇见的问题

1.不知道怎么确认以及删除自己的索引,

mysql> show index from tblname;

删除索引的语句
DROP INDEX index_name ON table_name;




三,收获:我韦杰师兄是真的厉害,看了一堆日报,他几乎是做得最详细,格式最好的了。
参考他的日报,我也解决了以前遇到的导出sql问题。
不过也略有不同之处。
无法使用sql语句导出导入文件的问题,花了好多时间都没有找到原因,结果翻看师兄日报的时候意外发现答案:
使用命令行导入导出sql文件要在cmd环境中,也就是说不能登录到MySQL中去使用导出导入文件命令。
马上验证一下↓↓↓↓↓
①查看任务管理器,确保MySQL服务是打开的。若服务没打开则会报错无法连接MySQL。
②输入命令导出sql脚本文件
 
mysqldump [-h localhost] -u root -p database_name table_name>路径\*.sql     其中方括号内的-h localhost可省略不写
在第二步的时候,我遇见了
的问题,我想了一下,这大概语句没有错,但是是环境变量的锅
在我把环境变量path改了一下,系统变量加了一个mysql以后,一切就解决了。具体操作看下面的连接。
在cmd下运行mysql以及使用mysqldump命令导出数据库中的脚本 - - CSDN博客

最后没有报错就是成功导出



四,明天计划
前两天每天有6个小时及以上的学习时间,周末可能会比较忙,时间会短一点。

完成步骤14-15




五,进度
任务当前进度:任务一步骤13下载Maven3,并配置好环境变量。
任务开始时间2017.8.18 10.00am
任务提交时间2017.8.18 9.09pm
延期风险:无




mysql查看表索引_百度经验



返回列表 返回列表
评论

    分享到