幾十萬資料,分頁查詢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 stationstyperesultmodel 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...