雄辯查詢我有兩個表標籤和聯繫,我的標籤表如下所示:如何優化它有一個外鍵
而且我的管理員表如下所示:
admin表中的標記字段是外鍵,它引用了標記表中的標識。我想要做的是,用特定的tag
拉起管理表中的記錄,現在管理表中的tag
現在引用tags
表中的id
。
所以我寫了下面的查詢來從管理表中檢索具有特定標籤(例如Javascript
)的文章。
public function showTagListing($tag) {
$tagId = DB::table('tags')->where('tag', $tag)->first();
$tagBlogList = DB::table('admin')->where('tag', $tagId->id)->orderBy('created_at' , 'desc')->get();
return view('pages.taglisting', compact('tagBlogList', $tagBlogList));
}
我想我已經寫在這裏檢索文章記錄代碼一些額外的不必要的線,我怎樣才能使代碼在同一行?我如何優化這些代碼行?
在性能優化方面,您不能做更多。你可以做一個連接而不是兩個查詢(這是大多數情況下應該表現更好)。但就可維護性和代碼的完整性而言,您可以做很多事情。要開始你應該創建[模型](https://laravel.com/docs/5。4/eloquent)爲您的每個數據庫表,並相應地創建它們之間的關係(即Admin belongsTo Tag,Tag有許多Admin ...)。 – devk
實際上,從性能水平來看,你應該可以用1個查詢來完成這個操作,而不需要連接,使用'WHERE EXISTS(...)' - 如何用雄辯的方式做到這一點,你可以看到Sandeesh的答案。 – devk