62、索引对DML语句的影响
数据库利用索引来提高根据索引列的查询效率。但是在提高根据索引列查询效率的同时降低了DML语句的效率。因为当对该表进行DML操作的时候,需要同时维护索引树。
索引创建索引的原则在经常作为查询条件的字段上创建索引,如果改变偏重于DML语句的效率则不建立索引。
63、请问对给表创建主键,是否会提高根据主键列的查询效率
会提高查询效率。主键是数据库的一种约束,由主键约束的字段唯一并且非空。一个表只能有一个主键。主键的意义在于唯一标识一条记录。
但是,在数据库中当创建唯一约束时,会自动在该列创建一个索引。即创建主键时,会自动在该列创建索引 。所以会提高根据主键列的查询效率,这是索引起的作用。
64、索引失效的情况
1、没有根据索引列进行查询
2、在索引列上使用函数
3、模糊查询前置%失效
4、当查询条件为is null时失效。因为null值不会放入索引树中(null只是一种 状态)
5、当使用to_char,to_date 当格式大小写和索引定义不一致时,索引失效
6、我们可以为经常作为组合查询的条件建立一个联合索引
单独引用复合(联合索引)索引里非第一位置的索引列
create index index_dssds on db_test_index(index_no,index_name)
对index_name进行查询时失效.
7、用于联合索引的列不能使用 or 关联只能用and
select * from db_test_index where index_no=’sdfsdfsdfsd’ or index_name=’sdfsdfsdf’
是失效的
65、怎样提高Web应用程序的效率
页面
1、避免使用大图片
2、避免一次性加载过多的数据(使用分页)
3、局部刷新尽量使用Ajax
4、尽可能的避免在window.onload时间中写过多代码。可以使用Jquery. Ready方法分开
5、尽可能减少与服务器的交互。(即JS能搞定就不要麻烦Java代码 如:非空校验)
Java代码
6、使用合适的对象 。如 String StringBuilder、ArrayList,LinkedList
7、使用合适的算法(冒泡排序,选择排序 | 遍历查找,二分法查找)。
8、尽可能减少与数据库的交互(原则:能在Java中解决的就不用数据库(如Java:uuid Oracle:sys_guid())。使用数据库连接池(如:c3p0,dbcp,druid))
数据库:
9、 尽可能的让SQL进行优化。
10、 查询效率低可以创建索引,并保持它是有效的。
11、 DML效率低,可以删除不必要的索引。
12、 如果表数据特别的大,可以考虑建立分区表(提高查询效率)
13、扩大表空间
14、更换硬件
66、Redis数据数据类型
Redis支持的类型一共有五种:
1、字符串类型
2、列表类型
3、哈希类型(相当于Map<String,String>)
4、集合类型(相当于Set,无序不可重复)
5、有序集合(相当于TreeSet,内容不可重复,但是会按照给出的排序值进行排序)