我有一個資料表 大概 15 萬筆資料 其實也沒很多

before

        $posts = Post::inRandomOrder()
            ->limit(1000)
            ->get();

這樣寫,結果跑起來超慢,然後我改寫

after

        $posts = Post::orderBy('id', 'desc')
            ->where('id', '<', rand(1, \DB::table('posts')->max('id')))
            ->limit(1000)
            ->get();

雖然,這樣就沒有很隨機了,而是從隨機中間點,抽 1000 筆出來

但因為我在產生 sitemap 而已,所以其實可接受

算是 laravel 小小地雷


共有 0 則留言