linq查詢非常慢 時間問題

2022-09-21 20:24:09 字數 2258 閱讀 3195

幾十萬資料,分頁查詢10行,花了30秒,太離譜!

改進1、連表查詢拆分成兩個查詢,在記憶體中連表。

從30秒,變3秒

2、日期查詢改成區間查詢

airhourly.date 資料舉例:2015-01-01 02:00:00.000

system.data.entity.dbfunctions.truncatetime(airhourly.date) == datehour 

改成:(airhourly.date >= datehour && airhourly.date < dateend) 

3秒變100毫秒。

若僅改2,也是100毫秒。

說明主要原因是2。

public jsonresult streetstationhourlydata(int page, int rows, string sort, string order, datetime datehour, string stations)//, string param, string stationstype

resultmodel result = new resultmodel();

if (pageinfo.page <= 0)

if (pageinfo.rows <= 0)

datehour = datehour.date;

var dateend = datehour.date.adddays(1);

var data = from airhourly in dbq.t_airstreetdatahourly2

join station in dbq.t_airstreetstation2

on airhourly.stationid equals station.stationid

where airhourly.stationid != null && (airhourly.date >= datehour && airhourly.date < dateend) && stationarray.contains(airhourly.stationid)

orderby airhourly.stationid, airhourly.date

select new airstreetdatadaily2 ;

//var data =

// from airhourly in dbq.t_airstreetdatahourly2

// where airhourly.stationid != null && (airhourly.date >= datehour && airhourly.date < dateend) && stationarray.contains(airhourly.stationid)

// //where stationarray.contains(airhourly.stationid) && system.data.entity.dbfunctions.truncatetime(airhourly.date) == datehour

// orderby airhourly.stationid, airhourly.date.hour

// select new airstreetdatadaily2 ;

//排序

if (pageinfo.order != null && pageinfo.sort != null)

, new );

}var data1 = data.skip((pageinfo.page - 1) * pageinfo.rows).take(pageinfo.rows).tolist();

//var datab = (from station in dbq.t_airstreetstation2

// where stationarray.contains(station.stationid)

// select new airstreetdatadaily2

//).tolist();

foreach (var item in data1)

if (item.pm10 != null)

if (item.pm25 != null)

}result.rows = data1;

result.total = data.count();

result.success = true;

return json(result);//, jsonrequestbeh**ior.allowget

}

查詢使用者上次登入時間問題

今天遇到乙個看似簡單卻很糾結的問題,但最後還是解決了 我用的是oracle 根據網上提供的好多都不行,具體貼圖 這是登入表的字段,每個使用者登入時候會insert使用者的id登入時間 現在使用者要顯示上次登入的時間該怎麼取?下面是登陸時間的倒敘排列 如果拿最新的登入時間如下所寫 但是取上次登入記錄 ...

時間問題3

問題及 檔名稱 main.cpp 作 者 李磊濤 版 本 號 v1.0 問題描述 輸入時間輸出時間。輸入描述 時間時分秒和要增加的時分秒。程式輸出 時間時分秒。includeusing namespace std class time void time add a sec void time ad...

C 時間問題

datetime dt datetime.now 當前時間 datetime startweek dt.adddays 1 convert.toint32 dt.dayofweek.tostring d 本週周一 datetime endweek startweek.adddays 6 本週週日 d...