joins與include的區別

2021-09-01 01:44:38 字數 843 閱讀 6099

:joins和:include的用法比較類似,但是二者又有一定的區別,這兩個都能提高效率,讓我們談一下,他們的優點和區別吧 

1>: 優點: 舉個例子 

accounts表和blogs表的關係是一對多 

1)blogs = blog.find(:all)  # 查詢一次blogs表 

blogs.each    # 迴圈多少次,就查詢多少次accounts表 

2)blogs = blog.find(:all, :include => :account)  #查詢了blogs表和accounts表各一次 

blogs.each    # 不再查詢,因為已經載入了accounts表 

總結: :include 減少了查詢表的次數,提高了訪問資料庫的效率,:joins和:include都可以減少查詢表的次數 

注意: 前面的:include預載入,也可以繼續優化,也就是使用效率更高的:joins,這種方式叫做『攜帶載入』,舉例:blogs = blog.find(:all, :joins => :account, :select => "blogs.*, accounts.email as accounts_email" ) 

2>:  :joins和:include的區別 

這兩個都是聯表查詢,可以提高效率,但是:include 是預載入,也就是將關聯的資訊會預載入到記憶體,那麼當我們用到預載入的內容時,使用這個會很好,如果不用到預載入的內容時,則不要用:include,而要用:joins,例如我們把關聯表的某些資料用到條件裡時,而不用到頁面顯示,這時就用:joins,具體的例子: blogs = blog.find(:all, :include => :account, :conditions => } ) 

include指令與include標籤區別

include file 與兩種方式的區別 1.include指令 includefile 檔案的絕對路徑或者相對路徑 file屬性是必填的 絕對路徑或相對路徑 但它不支援任何表示式,也不允許通過?掛參方式來傳遞引數。2.include動作 page屬性是必填的 絕對路徑或相對路徑 但它支援表示式也...

include與import引用模版的區別

區別 1。import需要先引用template,然後再使用template include不需要預先引用,直接在需要的地方引入模版即可。2。include模式非常簡單,就是簡單的 替換,不存在作用域,也不能像import一樣使用data傳遞變數 3 import存在作用域的概念。即只會import...

PHP require和include的區別不同

在php中,include和require的作用比較容易混淆。下面我以乙個經典例子來深刻說明它們的區別。當我們經常訪問乙個資料庫時,可以把連庫語句寫成乙個檔案 con db.php dbh mysql connect localhost mysql select db admreqs 在實際應用時,...