shulinqian 2012-02-15 10:43:59 3939次浏览 6条回复 0 0 0

yii分页的时候要统计总数,查看执行sql如下:

SELECT * FROM `jc_log` `t` LIMIT 10
SELECT  COUNT(*) FROM (SELECT * FROM `jc_log`) t;

这就很奇怪了,为什么要用子查询?为什么不直接用 SELECT COUNT(*) FROM jc_log 来看下这两条语句的执行效率: 一个log表, 数据354887行,字段不多,只有日期和地址

SELECT  COUNT(*) FROM (SELECT * FROM `jc_log`) t      1.031s
SELECT COUNT(*) FROM `jc_log`                                            0.093s

几个数量级的差距,为什么yii选择了子查询?求解。

  • 回复于 2012-02-15 15:29 举报

    我前几天刚解决了一个分页的问题,本以为终于找到适合我等菜鸟来回答的问题了呢~
    结果,LZ问的是 为什么~
    这个,我等实在是水平有限,坐等大神前来表演~

  • 回复于 2012-02-15 18:32 举报

    大牛快来解答呀~~~~
    我先给出一个猜测性答案: 会不会是为了写relations方便,给其预留 t 这个别名呀~

  • 回复于 2012-02-15 23:06 举报

    我想是因为你这个是简单的子查询,如果有更多的条件,或者事先要进行过滤的话,就会很有用了哈,个人意见

  • 回复于 2012-03-13 11:36 举报

    我也等待中,看看高手怎么说的

  • 回复于 2012-03-13 17:59 举报

    坐等大湿

  • 回复于 2012-09-26 16:15 举报

    大湿呢,快来吧

您需要登录后才可以回复。登录 | 立即注册