id 最好能是主键,不是的话看情况加索引。 ------解决方案--------------------
视图不是预编译的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()