mysql 语句执行效率优化
String sql = "SELECT u.userid,u.STARTDATE, f.star, a.downmoney,a.downamount,a.pvamount "
+ "from sys_user u INNER JOIN fuser_fixinfo f ON u.USERID=f.userid "
+ "INNER JOIN fuser_accountdynamic a on u.userid=a.userid "
+ "WHERE f.star= "+star+" and a.downmoney>"
+ downmoney
+ " and u.startdate > '"
+ startDate
+ "' order by "+orderBy+" desc ";
与 这样的语句
select u.userid,u.STARTDATE, f.star, a.downmoney,a.downamount,a.pvamount
from sys_user u,fuser_fixinfo f,fuser_accountdynamic a
where u.userid in(select f.userid from fuser_fixinfo where f.star= )
and u.userid in(select a.userid from fuser_accountdynamic where downmoney>0)
and u.satrtDate>
order by
这两个哪个效率更高?
这几张表没有大小之分的,不能确定那张表数据量大。求还能优化吗?求指点。。。
追问:能知道个qq吗。详细问下。谢谢
答案:效率你自己执行下就看得出了......我估计是一样的,因为2条语句都是采用嵌套循环查询,如果我选的话,会选where u.USERID=f.userid and u.userid=a.userid这种形式,因为看着顺眼点~~~
非要优化的话,可以在f.star、downmoney、u.userid列上加索引,看看表的大小和列的离散度再考虑是否需要加吧。
其他:第一个语句要效率高些。
第一个比第二个有序
in 子句本身效率不高。
上一个:MySql数据库时间判定问题
下一个:mysql 改了密码