关于AR::findOne()与AR::find()->where()->one()及AR::find()->where()->limit(1)->one()的查询速度问题

先写结论:

1. AR::findOne()AR::find()->where()->one(),其实是一样的,findOne()where()->one()的快捷方式。

2. 如果是主键查询,AR::find()->where(['id'=5])->one()AR::find()->where(['id'=>5])->limit(1)->one()是一样的,因为sql的执行结果都只有一条。

3. 如果是条件查询,AR::find()->where(['status'=1])->one()AR::find()->where(['status'=>1])->limit(1)->one(),后者速度会快一些(数据量越大越明显),因为前者会返回所有符合条件的记录然后抛出第一个结果,而后者只返回一条记录。