关于速度问题,和强商榷--Pagination

这几天仔细研究了一下Yii的Performance问题。现在一事和强请教。先只在这个中文区问了。

我有一个数据库,大约有4000多文章。用SQLITE数据库。我一直在用我自己的PHP小程序在我的机器上读。速度还比较快,0.03 秒。而用CakePHP和Yii,都需要1秒以上。Yii稍微快一些。数据库里有三个表。post, category, user. 整个数据库有30M。所有三个都没有用Cache. 当然,我自己写的,只能自己用。没有任何安全措施,只是Got the job done.所以,体积最小。

最近用CakePHP和Yii先后试了一下。感觉速度都比较慢。我自己写的Pagination,生成分页时,是用select * from database where id>:id limit PageLimit.

看了一下Yii,我的感觉是Yii是把所有记录全读出来,然后,分页。所以,导致速度不够快。

不知道理解对不对。谢谢指教。

你的Yii代码是怎样的?你是一次显示4000多文章还是分页显示?如果是后者并且你用了CPagination,那么Yii是用LIMIT来做的。你可以试试blog demo。不大可能超出1秒的。

谢谢强。 我是用Pagination.也就是分页确实是用Limit做的。

你的action代码是怎样的?

我的代码和Blog Demo的完全一样的。只是加了Category table。 也就是在Relations里加了一行。其它的基本上没有变。

目前,Show的速度还是非常快的。和我自己写的简单代码差不多。就是List 稍微慢一些。

对了,如果我List某一个Category,速度就快很多(因为Page比较少?)。 我在猜想是不是Pagination的过程比较费时间?

等慢慢研究吧。我周末用Cache再测试一下。

如果你有Category,你要注意是eager loading还是lazy loading。如果是lazy loading,对每一条记录都会执行一条SQL,所以速度就可能慢。

多谢强。我用的是Eager Loading。