【发布时间】:2012-10-09 02:20:58
【问题描述】:
我有一个巨大的 ID 列表,我需要通过一个表查询这些 ID 是否在表中可用,如果是,则获取其模型。
由于有几千个 ID,这个过程真的很慢,因为我正在使用 CActiveRecord::find() 方法
例如。 $book = Book::model()->find('book_id=:book_id', array(':book_id'=>$product->book_id));
我什至索引了所有可能的键,但仍然没有改进。 有什么提高执行速度的建议吗?
提前感谢:)
【问题讨论】:
-
我不明白,它的 $product->book_id 是一个 id 数组?
-
为什么不使用
IN子句和->findAll?? ...在一次拍摄中,您将获得所有记录并将它们设为哈希(按 id)并使用它。 -
@Asgaroth :对不起,它循环遍历数组,并且在每次迭代时 $product->book_id 都会保存一个新值
-
@SuVeRa : 你能解释一下如何做吗?
-
正如 onkarjanwa 所建议的,如果您正在处理数千条记录并且您不一定需要关系功能,那么最好使用 mongodb 之类的东西。