写项目,对数据库中的数据进行处理,深入了解数据库中的索引
- MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
- 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录
- 索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件,建立索引会占用磁盘空间的索引文件。
索引的类型:
- FULLTEXT,HASH(唯一),BTREE(存入二叉树中), RTREE(很少在MySQL中使用)
索引种类:
普通索引:仅加速查询(MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。)
-
唯一索引:加速查询 + 列值唯一(可以有null)
-
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个。
-
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。(在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。如果要查询的字段不构成索引最左面的前缀,那么就不会是用索引,比如,age或者(name,age)组合就不会使用索引查询)
-
全文索引:只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,介绍了要求,全文索引:就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有"我是嫩叠,儿砸" 通过"儿砸",可能就可以找到该条记录
对数据库中关于时间类型转换的处理:
时间类型
数据库类型与java中类型的对应关系:
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
* 领域对象(domain实体类)中的所有属性不能出现java.sql包下的东西!即不能使用java.sql.Date;
* ResultSet#getDate()返回的是java.sql.Date()
* PreparedStatement#setDate(int, Date),其中第二个参数也是java.sql.Date
时间类型的转换:
java.util.Date —————> java.sql.Date、 java.sql.Time、 java.sql.Timestamp
把util的Date转换成毫秒值,使用毫秒值创建sql的Date、Time、Timestamp
java.util.Date date = new java.util.Date();
long longtime = date.getTime();
java.sql.Date sqlDate = new java.sql.Date(longtime);
java.util.Date <————— java.sql.Date、 java.sql.Time、 java.sql.Timestamp
这一步不需要处理了,因为java.sql.Date、Time、Timestamp 都是java.util.Date的子类,可直接转型。
写项目