sql >> データベース >  >> RDS >> Mysql

linqからエンティティへ:linqクエリのパフォーマンスの最適化

    簡単に推測すると、Count()とToList()の両方がクエリを実行します。最初にToList()を実行し、受信したリストを使用して要素の数を取得します。

    そのように:

    private List<TNews> GetPagedNews(int pagenum, int pagesize,
        AdvSearcherArgs advcArgs, string keyword)
    {
        var dataSrc = _dbRawDataContext.TNews.Where(x => x.Id>0);
        if (!string.IsNullOrWhiteSpace(advcArgs.PMAC))
        {
            dataSrc = dataSrc.Where(m => m.Pmac == advcArgs.PMAC);
        }
        if (!string.IsNullOrWhiteSpace(advcArgs.BegineDate))
        {
            var begin = Convertion.ToDate(advcArgs.BegineDate);
            var end = Convertion.ToDate(advcArgs.EndDate);
    
            dataSrc = dataSrc.Where(m => m.PmacDT >=begin && m.PmacDT<end);
        }
        dataSrc = dataSrc.OrderByDescending(n => n.PmacDT).Skip(pagenum * pagesize).
          Take(pagesize);
    
        var myList = dataSrc.ToList(); //execute the query to an in-memory list
    
        var cnt = myList.Count(); //get the count from the already exeuted query
        SetPagerValues(pagenum, pagesize, cnt);
    
        return myList; //return the list
    }
    



    1. ClusterControlを使用したMySQL8.0の監視と運用管理

    2. 2つの日付の間の金曜日の数

    3. 時間属性に関連する設計データベース

    4. 究極の絵文字エンコード方式