视图不是预编译的sql。。view在查询的时候,还是会执行一遍里面的select语句 create view v_test select count(1) from ... 效率没有提高,只是操作起来方便了。
况且这里的查询sql还需要传递一个参数,需要返回一个值,用的话也是用function了。。 [解决办法] 数据库优化就那么几点 1、使用索引,频繁查询字段需要建立索引,而且字段数据没有包含NULL。 2、查询语句不存在变动,这样数据库就不会重复解析sql来影响查询速度: 例如select * from table t where id=xx;与select * from table t where id=?; xxx.setInt(xx); 第一个xx这个值不断变动,影响语句变动,sql对每个不同的值都要完成语句编译,造成查询速度下降,后一种的?不会变动,值由api注入进去,因此语句不会变动,sql调用不会重复编译语句。 3、不要使用跑背离索引的查询,例如not查询 包含null的查询 like '%xxx%'这样的查询,同样尽量也不要使用函数。 4、查询尽量不要使用抽取所有值的查询,尽量有where字句来使用索引。 5、in语句中不要包含子查询,如果需要使用exists子查询。 6、查询尽量使用简单值,不要使用复杂数值或者函数。例如select count(1)from table就会比select count(*) from table快一点。 [解决办法] 返回一条就用uniqueResult()