-1
A
回答
1
Activerecord使用常規的SQL查詢來執行任何您希望它執行的活動。顯然,如果你使用activerecord來代表你的查詢,那麼它可能會選擇一種效率較低的方法來實現,比你想的要好。
這是針對當前所有ORM的標準配置。
但是,原始sql和通過activerecord發出的相同查詢將具有相同的性能影響,即使是明智的記憶。
1
如果你的問題是「在下面的例子中第二個需要明顯更多的內存?」。
實施例1:
$query = $this->db->query("SELECT `id`,`somefield` FROM `some_table` WHERE `id` = $id Order by `somefield` DESC");
實施例2:
$query = $this->db
->select('id, somefield')
->from('some_table')
->where('id, $id)
->order_by('somefield', 'DESC');
->get();
答案是存儲器差不顯著。還有一些額外的記憶,但在事物的計劃中,這並不是很多。
Active Record(自CI v3以來重命名查詢生成器)的目的是構建查詢語句字符串。活動記錄示例將執行更多代碼以組裝第一個示例中定義的相同語句。在它構造聲明之後,它實際上使得第一個例子所做的完全相同的調用。
如果正在加載Active Record類(由數據庫配置設置確定),則分配內存以保存該代碼,無論您是否使用該代碼。
使用Active Record確實需要更多的輸入。爲什麼如果查詢很容易用簡單的字符串表示?另一方面,在不同的查詢語句可能有條件需要(即不同的字段集合,附加或不同的「where」條件,備用排序順序等)的情況下,Active Record可以使您的生活更容易。例如。
$this->db
->select('id, somefield')
->from('some_table')
->where('id, $id);
if($need_another_where)
{
$this->db->where('other_field', $other);
}
if($reverse_sort)
{
$this->db->order_by('somefield', 'DESC');
}
else
{
$this->db->order_by('somefield', 'ASC');
}
$query = $this->db->get();
不可否認,通過有條件地連接字符串可以很容易地重新創建上述示例。但更復雜的情況可能很容易存在。
相關問題
- 1. 使用CodeIgniter Active Record轉換MySQL查詢
- 2. 使用Codeigniter Active Record重寫MySQL查詢
- 3. CodeIgniter Active Record在查詢中使用「USING」
- 4. Active Record Rails查詢
- 5. 如何在codeigniter Active Record表單中寫入mysql查詢?
- 6. codeigniter active record where,or_where?
- 7. CodeIgniter Active Record整理
- 8. MySQL Active Record問題
- 9. 固定笨的Active Record更新查詢
- 10. CodeIgniter Active-Record搜索與哪裏,AND,或
- 11. CodeIgniter Active Record與第三個參數
- 12. Codeigniter Active Record HAVING/WHERE db.field = db.field
- 13. Codeigniter Active Record Class插入從
- 14. SQLite3,PDO,Active Record和CodeIgniter
- 15. 使用CodeIgniter的Active Record
- 16. Codeigniter Active Record多更新
- 17. 使用CodeIgniter Active Record語句
- 18. Codeigniter Active Record中的Multiple Select Count SQL查詢
- 19. 如何編寫一個查詢中的CodeIgniter的Active Record
- 20. CodeIgniter Active Record;將兩個查詢合併爲一個?
- 21. 如何使用codeigniter Active Record查詢將數據插入表中?
- 22. 轉換SQL查詢的Active Record
- 23. 笨括號中的Active Record查詢
- 24. Rails 3中加入的Active Record查詢
- 25. Active Record「where」從父資源查詢
- 26. 笨的Active Record查詢順序
- 27. 插入codeigniter的普通舊sql查詢?
- 28. 笨的Active Record/MySQL查詢 - GROUP_BY導致返回只有一行
- 29. 查詢where date = Date.today with Rails,MySQL和Active Record
- 30. 笨的Active Record類錯誤VS MySQL的原始查詢