mysql order by操作性能問題
在我的筆記本上,運行如下 sql代碼(總共數據行約7萬行,無索引)
select * from(
SELECT nodeinfo.nodeID nodeid,nodeinfo.niid niid ,nodeinfo.type type ,nodeinfo.testType testtype,sensordatapacket.storedtime storedtime,sensordatapacket.value value,
sensordatapacket.unit unit,sensordatapacket.dataType datatype,nodeconfig.nodeAddress nodename
FROM www.2cto.com
nodeinfo
Left Join sensordatapacket ON nodeinfo.nodeID = sensordatapacket.nodeID
Left Join nodeconfig ON nodeconfig.nodeID = nodeinfo.nodeID
where testtype='待測' and type='土壤溫度' order by storedtime desc) a
group by a.nodeid order by a.storedtime desc
紅字標注部分,使用order by storedtime desc時候 共用時9.284s
使用order by storedtime asc時候,共用時17.04s
不使用order by操作的時候共用時2.022s。
目的時候對每個nodeid,檢索出storedtime最近的一條數據。
若不使用order by 操作,檢索出數據,storedtime時間為中間的一個某個時間。符合E.F.Codd博士在“a relation modal of data for large shared data banks”中提出的
數據庫關系模型 的理論。數據庫的物理存儲並不一定是按照主鍵順序存儲,數據表中的數據本質上是在一個集合中。