发表于: 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类型长度如何确定,和text和longtext有什么区别?
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,注意遵守命名规范。
16.在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包
17.编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。
遇到的问题:
今天的问题主要是在索引上,了解索引功能之后,添加十条数据,发现有索引和没有索引的sql语句执行时间都很短,怀疑时因为数据太少不够明显,后续数据量大时再进行测试,不知猜想是否正确?
评论