@ PerfectDesign
@姜敏
指的是你居然用interbase
哈哈,没办法,我也不想,但是现在小项目没办法。
@姜敏
实践是检验真理的唯一标准,如果字段多group by 效率不好而用子查询
那么 子查询做为字段来做的效率永远是最低的。
如果你要考虑group by的效率,那么你就该在适当的字段上建立,或者几个字段分开group 的方式 (嵌套)
@ 假正经哥哥
子查询做为字段来做的效率永远是最低的
这句话有什么根据吗?
其实我想知道就是子查询做为字段和我用的第二种方法:循环进数据库取数据,这两方法在执行效率上的区别.
要是我来实现这个功能的话,我会在 电影表里加至少两个和集数相关的字段。
电影表
电影一共有多少集
已经上传了多少集
其它字段
可能“电影一共有多少集”的字段已经有了,“已经上传了多少集”的字段好像没有,而是通过另一个表,动态count 出来的。
我会在每次变动的时候(比如上传了一集新的),来修改 “已经上传了多少集”的字段,这样,现实的时候就会很快了。
没有太细看,可能理解的不正确,仅供参考。
@ 金色海洋(jyk)
非常谢谢您的解决方案,非常有效,但是您能不能给在下说下这个问题呢?
其实我想知道就是子查询做为字段和我用的第二种方法:循环进数据库取数据,这两方法在执行效率上的区别.
@金色海洋(jyk)
你这个想法就是索引视图的想法
而且不需要你手动维护聚合字段
说实在的,你写的sql语句我都没有看懂,所以区别就不好说了。
count的效率是很慢的,他必须去“数数”,基本没有什么可以优化的方法,所以要尽量地少用,及使用的话,也要在where 条件里的字段做好索引。
再有就是看 到底做了多少次count 。可能第一种方法是对电影表里的所有记录都做了一遍count ,而第二种只做了11次count 。
@ 金色海洋(jyk)
1:说实在的,你写的sql语句我都没有看懂,所以区别就不好说了。
2:count的效率是很慢的,他必须去“数数”,基本没有什么可以优化的方法,所以要尽量地少用,及使用的话,也要在where 条件里的字段做好索引。
3:再有就是看 到底做了多少次count 。可能第一种方法是对电影表里的所有记录都做了一遍count ,而第二种只做了11次count 。
现在本人针对您的观点提出点问题:
1:抱歉,写的不太好,现在修改了下应该可以看明白了.
2:count的效率是很慢的,他必须去“数数”,基本没有什么可以优化的方法,所以要尽量地少用
尽量少用是什么概念,有的地方是一定要用的,您是否有更好的计算总数的方法呢?
3:可能第一种方法是对电影表里的所有记录都做了一遍count ,而第二种只做了11次count 。
我第一种方法里面有子查询,所有外层循环一次就要count一次,所有它总共count了10次,第二种方法也是count10次,他们唯一的区别就是第一种方法只连接数据库1次,页第二种方法连接数据库10次而已.
本人的这两种方法理论上应该是第一种连