发表于: 2017-09-17 21:00:20

1 663


今天完成的事情:

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


我使用了explain语句查看有索引和无索引状态下的查看数据效率,发现时间相同,可能是因为数据只有十条看不出来区别。但是可以看到检索的行数变化,上方有索引的表格只检索了一次,没有索引的十二行全部检索了一次。以后数据多的时候会进行更多的测试。

记录的对索引的理解:

一个索引时存储的表中一个特定列的值数据结构(B-Tree)。索引是在表的列上创建。索引包含一个表中列的值,并且这些值存储在一个数据结构中。索引是一种数据结构。

1.B-Tree索引是常用数据结构,时间复杂度低,存储在B-Tree中的数据是有序的。

2.哈希表索引,寻找值时哈希表效率高。哈希索引的工作方式是将列的值作为索引的键值(key),和键值对应的实际的值(value)是指向该表中相应行的指针。

哈希表只适合查询键值对-也就是说查询相等的查询(例:like WHERE name = Jesus’)。哈希表存储是无序的。

数据库索引里究竟存的是什么:

       数据库索引是创建在表的某列上的,存储了这一列的所有值。不存储这个表中其他列的值。数据库索引同时存储了指向表中的相应行的指针。

数据库何时使用索引:

       当查找语句 SELECT * FROM Employee WHERE Employee_Name = ‘武月

数据库会检查在查询的列上是否有索引,如果有索引,据库会接着检查使用这个索引做查询是否合理 - 因为有些场景下,使用索引比起全表扫描会更加低效。


2.深度思考的一些问题

为什么db的设计中要使用long来替换掉date类型

      因为date有固定格式,long没有固定的格式也可以储存,很方便。

自增id有什么坏处

      表格缺少了唯一的标示。

      如果删除了一行之后,后面新加入的行id还在增加,不利于修改。 频繁需要增删改查的表不适合使用自增id

什么是DB的索引,多大的数据量下建索引会有性能上的差别,什么情况下该对字段建索引?

      索引是在表的列上创建的,是一种数据结构,数据库索引同时存储了指向表中的相应行的指针。数据上万条以上会有性能上的差别。表记录数据很多的时候应该建索引,不经常增删改的表,名字信息等,看了师兄的答案,快速查找或者特定的字段应该加上。

唯一索引和普通索引的区别

      唯一索引是在表中只有唯一一条同样内容的信息,普通索引可以有多条。Id等标注信息需要建立唯一索引。

如果对学员qq号做了一个唯一索引,在插入数据的时候,是否需要先判断这个qq号已经存在了

      需要。否则会报出 Duplicate entry

修真类型应该是直接存储varchar,还是应该存储int

      修真类型有字符串儿,存储为varchar。

Varchar类型长度如何确定,和textlongtext有什么区别?

      varchar根据实际业务数据定义一个合适的长度,可以调整大小的字符串。text和longtext的长短不同。
效率上(char>varchar>text)

      师兄笔记:常变化的用varchar,固定长度的用char,尽量用varchar,能用varchar的不用text。

怎么进行分页数据的查询,如何判断是否有下一页?

     使用limit语句,select *from user1 limit m,n;


3.下载java7,配置环境变量,之前已经做好。jre是运行时环境,安装后可以运行java程序。jdk是开发工具包,包含了java的工具和jre。


4.下载Maven3,并配置好环境变量。

明天计划的事情:

14.下载Eclipse或者是IDEA,配置好Maven。

15.创建一个新的maven项目
16.在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包
17.编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。


遇到的问题:

今天的问题主要是在索引上,了解索引功能之后,添加十条数据,发现有索引和没有索引的sql语句执行时间都很短,怀疑时因为数据太少不够明显,后续数据量大时再进行测试,不知猜想是否正确?


返回列表 返回列表
评论

    分享到